C#的GET/SET
// 类
public class Person
{
// 字段
private string name; private int age; private string sex;
// 属性
public string Name
{
get { return name; }
set { sex = value; }
}
public int Age
{
get { return age; }
set { age = value; }
}
public string Sex
{
get { return sex; }
set { sex = value; }
}
}
字段和属性,都可以叫做是成员变量{ name、age、sex、Name、Age、Sex}
1为什么区分字段和属性?
字段一般用在类的内部使用,属性一般供外部类访问。按照类的设计原则,字段都是private的,只能在类的内部使用,如果是public的,那么外部类谁都有可能访问,对字段进行破坏性的修改,这是我们不希望看到的,所以字段一定是private的。
《属性想当于是给字段加了一个保护套,如果想读这个字段的值,属性里面走的一定是get{},如果想给字段赋值,属性里一定走的是set{},那么程序员可以在get{}和set{}中增加一些限制,验证要赋值的内容,或者让某个字段只能读不能赋值(对应该字段的的属性只让它有get{},不写set{})。对于外部使用者来说只能够使用它,不能控制它,如何控制操作是由类自身决定的(或者说是由程序员决定的,嘿嘿》
字段值可以用作ref、out参数,而属性不能。
2对于只是限定读取和访问权限,而无复杂逻辑条件判断的,可以使用一些简化的方式。
// 写法一
class Test
{
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
}
// 写法二
class Test
{
private int age;
public int Age
{
get => age;
set => age = value;
}
}
// 写法三
class Test
{
public int Age
{ get; set; }
//或者直接省略
}
3属性是对字段的一种保护和制约
private int a;
public int index
{
get
{ return a; }
set //当对index赋值,这个值能否传给a,是有条件限制的
{
If (value>0)
a=value;
else
a=0;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律