1.隐藏内部细节,开放对外窗口
namespace demo7
{
public class Student
{
public string name;
//没学属性之前
//要封装内部细节,变量age保持私有
//隐藏队内的逻辑
private int age;
//对外开放的方法
public void SetAge(int age)//判断合法
{
if (age<=0 || age>150)
{
age = 16;
}
this.age = age;//this
}
public int GetAge()
{
return this.age;
}
public void StuInfo()
{
Console.WriteLine($"学生的姓名为:{name},年龄为:{age}");
}
}
}
namespace demo7
{
class Program
{
static void Main(string[] args)
{
//C#编译器 语法塘
Student stu1 = new Student();
stu1.name = "张三";
//stu1.SetAge(-1);
stu1.SetAge(21);
stu1.StuInfo();
Console.WriteLine(stu1.GetAge());
Console.ReadLine();
}
}
}
2.属性
方式一:
public int Age
{
get;//读取权限
set;//默认权限,如果把set注释掉,意思是只读
}
方式二:
private int age;//字段:内部
public int Age
{
get
{
return age;
}//读取权限
set //默认属性Age是给value赋值
{
if (value <=0 || value>150)
{
age = 16;
}
else
{
this.age = value;
//在类的内部使用,代表当前的类的对象,this能点出来的都是成员变量(字段、属性和方法)
}
}//赋值权限
}
方式三:
private string name;//字段,首写字母小写
public string Name //Lamda表达式 简化版编译器 匿名方法 =>的优先级跟=一样
//c#编译器语法塘:语法简化,但是编译器还能够识别
{
get => name; //代表了get{return name;}
set => name = value; //代表set{return name=value;}
}
快捷键:
【1】prop+ 2下Tab:生成属性
【2】ctrl + r + e:生成lambda表达式,简化语法
步骤:①首先写一个私有的字段:private string name;
②然后把光标置于该句,按下ctrl + r + e,弹出封装窗口,选择即可
private string name;//字段,首写字母小写
public string Name //Lambda表达式 简化版编译器 匿名方法 =>的优先级跟=一样
//c#编译器语法塘:语法简化,但是编译器还能够识别
{
get => name; //代表了get{return name;}
set => name = value; //代表set{return name=value;}
}
this:
在类的内部使用,代表当前的类的对象,this能点出来的都是成员变量(字段、属性和方法)