构造方法:
1:构造方法的作用:为属性赋值
2:如没有显示构造方法,则有一个默认的无参构造方法
3:如有构造方法,则就没有默认的构造方法
4:只能用**“new 方法名()”这个来定义构造方法
注意:1 构造方法通常声明为public**
2 构造方法没有返回值类型的
3 构造方法名字必须与类名相同
this关键字
1:封装:Ctrl+R+E
private string name;
/// <summary>
/// 姓名
/// </summary>
public string Name { get => name; set => name = value; }
封装的最原始状态:
private int _height;
public int Height {
set { _height = value; }
get { return _height; }
}
封装的简约状态:
private string name;
public string Name { set; get; }
public void Display()
{
Console.WriteLine("i am {0}", Name);
//注意输出要是Name,注意注意注意!!!
}
封装的高级
public string Name { set; get; }
//编译器自动在背后给他加上对应的字段 private string name;
public void Display()
{
Console.WriteLine("i am {0}", Name);//注意输出要是Name
}
2:this关键字,代表的是当前对象,可调用属性,字段,方法
值类型和引用类型
1:C#中的数据类型:值类型(int,char,double,bool等)和引用类型(类string,数组,接口)
2:值类型:每个值类型变量存储对象的值是相对独立的,修改一个变量,其他变量的值不改变
引用类型变量:1:存储对象的内存地址,赋值不会创建值的副本,只会创建地址的副本
2:修改任何一个副本,也同时修改其他的副本
结构
1:值类型包括的int,char等都是为结构,结构和类相似,但是也有不同
2:结构(struct 名字)和类的相同和不同
相同:1:都包含属性,字段,和方法
2: 都一样声明实例化,并且访问属性,也可以不用实例化,在main方法外面加上**“static Dog dog”即可
不同:1:结构是值类型的,类是引用类型的
2:结构中不能实现属性或字段初始值设定项(即不能设初始值**),但是类可以
3:结构中只能定义带参构造(并且带参构造的参数必须要全部赋值),不能定义无参构造;类中能够写无参构造方法,带参构造方法中参数可以不用赋值
总结:1:结构是值类型(类是引用类型的)
2: 结构中可以定义字段属性和方法**
3:不能为结构中的字段赋初始值
4:结构中的构造方法中必须为所有字段赋值在这里插入代码片
5:不能为结构显示定义无参数的构造方法
6:结构类型的对象可以不实例化**
struct Dog
{
string name;
public string Name { get => name; set => name = value; }
public void Sing()
{
Console.Write("汪汪");
}
public Dog (string name)
{
this.name = name;
}
}