1.类的定义
语法:
[public] class People(首字母大写)
{
public string _name;//字段Field;
public string Name
{
get {return _name;}
set{_name = value;}
}//属性Properties;
//Name属性可以简写为
//public string Name{get;set;}
也可以加if判断语句:
[public] class People(首字母大写)
{
public int _age;//字段Field;
public int Age
{
get {return _age;}
set
{if(value>0&&value<100){_age = value;}
else{_age = 0;}
}
}//属性Properties;
public static void CHLSS()//方法Method
{
Console.WriteLine(“xxx”)
}
}
public为访问修饰符,可以省略,省略后默认为private.
还可以使用快捷方式=>来定义这些属性:
public string Name => name;
属性必须为只读,并且你不能使用get访问器关键字。
还可写成public string Name{
get=>name;}
2.类创建对象(new)
语法:类名 对象名 = new 类名();
e.g.
this代指该类。
可以直接“对象名.字段名”和“对象名.方法名”引用对象的字段和方法。
(类不占内存,对象占内存)
Person person;//person未占内存
Person person = new Person();//person已分配内存,且整形字段初值为0,字符字段为null。
3.struct结构体的定义与类相同(都可以包含方法和字段,但结构体不包含类的封装,继承,多态等属性)。
ps:终端输出字体颜色的设置:
Console.BackgroundColor= ConsoleColor.Yellow;设置背景色;
Console.ForegroundColor=ConsoleColor.Yellow;设置前景色;
4.类中的属性
属性的作用是保护字段,对字段的取值和设值进行限定。属性的本质是两个方法get,set。
给属性赋值会执行属性里的set方法,引用属性(取值)会执行get方法。
上图中(类Person的一部分)_gender为字段,Gender为对应的属性,因为_gender前的访问修饰符为private,不能通过对象名直接访问,而属性Gender可以。
Person person = new Person();
person._gerder=‘未知’;//报错
person.Gender = ‘未知’;//调用set方法,person._gender=‘未知’
Console.WriteLine(person.Gender);//调用get方法,进行if语句的条件判断后return ‘男’,即输出结果为男
注意:在set和get方法中都可以添加条件判断语句对字段值的赋值和取值进行限定。
5.静态类(static)与非静态类区别
(1)在非静态类中,既可以有实例成员,也可以有静态成员。静态类中只允许出现静态成员不允许出现实例成员,静态类不能实例化(不能创建对象)。
(2)调用静态成员时只能“类名.静态成员名”;
调用非静态(实例)成员时只能“对象名.非静态成员名”;
(3)静态函数中只能访问静态成员,不能访问实例成员,实例方法中既可以使用静态成员也可以使用实例成员。
(4)静态类的使用
“工具类”(经常用的类如Console)写成静态类,使用时可以不创建对象直接使用;
静态类在整个项目中资源共享。只有在程序全部结束之后,静态类才会释放资源。
PS:项目的存储空间分为栈、堆、静态存储空间。静态类存储在静态存储空间中。
6.GC(Garbage Collection)垃圾回收器
7.构造函数(简化对象初始化方式,给对象的每个属性一次性赋值)
构造函数没有返回值,函数名与类名一致,写法与C类似。
调用构造函数定义对象:
PS:构造函数可以重载;每个类都有一个构造函数,该构造函数无参,写了一个新的构造函数后原来的构造函数失效。
8.new关键字作用