• 面向对象特征:封装、继承、多态。
  • 类实现了面向对象。

封装和类

定义类

namespace ABC{
	class DashBorad{
		public string Name;
		private double Value;
		List<零件> 零件s;
		void Rotate(double angle){ //指针转动
			Value += angle;
			Console.WriteLine(“指针转动了{0}度”, angle);
		}
	}
	class 零件{}
	class Program{
		static void Main(string[] args){
			DashBoard db = new DashBoard(); //实例化
			db.Name = “速度表盘”;
			}
}

this

实例化后,this代表对象本身。

属性

上下文关键字value
  • java中,习惯将所有属性设为private,使用getter、setter方法进行访问声明。

  • 而C#中进行了改进。

class DashBoard{
	private string _Name;
	private string Name{
		get { return _Name; }
		set { _Name = value; } //value为上下文关键字
	}
}
自动属性
class DashBoard{
	public string Name { get; set; }
}
  • 自动属性应用
private string _Name;
public string Name{
	private get { return _Name; } // 应用private和public进行只读、只写
	public set {
		if (string.IsNullOrEmpty(value)){
			throw new ArgumentNullException();
		}
		_Name = value;
}

自定义构造器

class DashBoard{
	public DashBoard(string name){
		this.Name = name;
	}
}
  • 理解用this调用构造器。

对象初始化器

DashBoard db = new DashBoard(){ Name = “xx” }

匿名对象

  • 不用声明类。
var user = new { Name = “zzz”, Age = 11};

静态成员

  • 静态成员具有全局性,属于类型,而非实例。
  • 静态字段、属性,访问时不需要实例。
  • 静态不能调用动态。
  • 静态方法,内部不能使用this。
  • 静态构造器用于初始化静态成员。
class DashBoard{
	public static long Sum {get; set; }
	// 静态成员,所有实例共享
	static DashBoard(){
		Sum = 10;
	}
}
...Main(string[] args){
	DashBoard.Sum += 10;
	// 访问时用类访问
}

如Math、Console等为静态类。使用时调用其中静态方法。

设计模式(单例模式)

class DashBoard{
	private DashBoard(){
		this.Reset();
	}
	private  static DashBoard _DashBoard = null;
	public static DashBoard Instance{
		get{
			if(_DashBoard == null)
				_DashBoard = new DashBoard();
			return _DashBoard;
		}
	}
	private Reset(){
		...;
	}
}
// 测试
var db1 = DashBoard.Instance;
db1.Name = “xx”;
Console.WriteLine(db1.Name);
var db2 = DashBoard.Instance;
Console.WriteLine(db2.Name); //db1与db2是一个东西

readonly

  • 尽在声明、构造时赋值。

嵌套类、分部类、分部方法

class A{
	partial void Func();
	// 多人协作时
	class B{}
}
partial class C{}