C#属性和字段

C#中的属性和字段

类成员包括变量和方法。如果希望其他类能够访问成员变量的值,就必须定义成公有的,而将变量设为公有public,那这个成员变量的就可以被任意访问(包括修改,读取),这样不利于数据安全。

属性可以当作对字段的封装,字段内部使用,属性因为安全性高可以外部使用.属性比字段,多设了get和set属性

最初定义一个Person类,存在字段age

    class Person
    {
        public int age;
    }

调用

   Person person = new Person();
   person.age = 1000;
   Console.WriteLine(person.age);

 这时候发现人的年龄不可能是1000,并且由于age是public的任意地方都可以修改,这样很不安全,但是如果把age设置为private又无法进行调用,所以考虑使用方法封装一个这个字段

class Person
    {
        private int age;
        public int GetAge()
        {
            return age;
        }
        public void SetAge(int age)
        {
            if (age > 100)
            {
                //数据错误处理
            }
            else
            {
                this.age = age;
            }           
        }
    }

调用

    Person person = new Person();
    person.SetAge(90);
    Console.WriteLine(person.GetAge());

 这样就实现了对字段的封装,取值使用Get方法,赋值使用Set方法

在C#中可以使用属性来解决这种问题

在属性get/set中加入逻辑判断

class Person
    {
        private int age;
        public int Age
        {
            get
            {
                return age;
            }
            set
            {
                if (value > 100)
                {
                    throw new Exception("数据异常");
                }
                else
                {
                    age = value;
                }
            }
        }
    }

 如果没有任何逻辑处理就可以使用自动实现的属性

    class Person
    {
        public string Name { get; set; }
    }

 等价于

     private string name;
     public string Name
     {
         get { return name; }
         set { value = name; }
     }

 使用访问修饰符或者通过省略get/set方法创建只读或只写属性

    class Person
    {
        public string Name { get; private set; }
        public int Age { private get; set; }
    }

 在 C# 6 和更高版本中,你可以像字段一样初始化自动实现属性

public string Name{ get; set; } = "Wang";

转载于:https://www.cnblogs.com/GnailGnepGnaw/p/10622090.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值