m1q2w3olf 发表于 2021-12-20 08:53

C#属性、字段和成员变量的关系区别

我们先来写一个类Person,字段为:name、age、sex,属性:Name、Age、Sex。那么,成员变量:name、age、sex、Name、Age、Sex。字段和属性,都可以叫做是成员变量。属性和字段都是用来存储数据的,但肯定是有不同的(要不然也不会起两个名字,干脆叫一个名算了~)。
    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; }
      }
    }
字段一般用在类的内部使用,属性一般供外部类访问。按照类的设计原则,字段都是private的,只能在类的内部使用,如果是public的,那么外部类谁都有可能访问,对字段进行破坏性的修改,这是我们不希望看到的,所以字段一定是private的。

属性想当于是给字段加了一个保护套,如果想读这个字段的值,属性里面走的一定是get{},如果想给字段赋值,属性里一定走的是set{},那么程序员可以在get{}和set{}中增加一些限制,验证要赋值的内容,或者让某个字段只能读不能赋值(对应该字段的的属性只让它有get{},不写set{})。对于外部使用者来说只能够使用它,不能控制它,如何控制操作是由类自身决定的(或者说是由程序员决定的,嘿嘿~)。

另外,字段值可以用作ref、out参数,而属性不能。


阿桂哥 发表于 2021-12-29 23:15

private 内部
public 公开
字段一定是private的

属性里面走的一定是get{},字段赋值属性里一定走的是set{},
{:6_210:}

775083111 发表于 2022-1-22 09:17

有楼主这样的热心人真好

忧虑和雪碧 发表于 2022-1-22 21:00

不知道来晚了没有

生动爱铃铛 发表于 2022-1-22 21:04

楼上很眼熟啊,是不是哪里见过

温暖笑毛巾 发表于 2022-1-22 22:38

谢谢分享

个性演变大地 发表于 2022-1-22 22:41

感谢楼主

彩色世界 发表于 2022-1-22 22:43

感谢楼主

闪闪的胡萝卜 发表于 2022-1-23 02:48

谢谢分享

调皮给战斗机 发表于 2022-1-23 04:40

无敌了!你怎么知道我想要什么!
页: [1] 2 3 4 5 6 7
查看完整版本: C#属性、字段和成员变量的关系区别