- 面向对象特征:封装、继承、多态。
- 类实现了面向对象。
封装和类
定义类
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{}