文章

C#特有的属性--成员安全访问和设置的语法糖

using System;

namespace GetAndSet
{
    class Program
    {
        static void Main(string[] args)
        {
            Student stu = new Student();
            stu.SetAge(29);//通过公有方法设置Age
            Console.WriteLine(stu.Old_GetAge());//通过公有方法读取Age
            int score = stu.score = 100;
            Console.WriteLine(stu.score);

        }
    }
    //本示例的Age使用的是老方法来保障私有变量的安全,Score使用新方法语法糖,可以看一下两种方法的不同.
    //这里c#的演示,Old方法是传统的Pascal使用的办法,而新方法score是一种c#的语法糖
    class Student
    {
        private int Age;    //私有成员,不允许直接访问
        private int Score;
        public int score   //新方法,语法糖开始,注意这里是小写,和上面的变量名称不一致,我饶了蛮久
        {
            get 
            { 
                return this.Score; 
            }
            set
            {
                if (value>=0 && value<=100)
                {
                    this.Score = value;

                }
                else
                {
                    throw new Exception("Value值不正确");
                }
            }
        }
        public int Old_GetAge() //公有方法,通过方法访问
        {
            return this.Age;
        }
        public void SetAge(int Value) //公有方法,设置规则,符合规则予以设置
        {
            if (Value>=0 && Value<=100)
            {
                this.Age = Value;

            }
            else
            {
                throw new Exception("Value值不正确");
            }
        }
    }
}

提示:

在vsIDE内,输入propfull,再按两次TAB键,会自动生成如下内容

//以下为实例属性,一般用来书写代表实例数据的内容
        private int myVar;

        public int MyProperty
        {
            get { return myVar; }
            set { myVar = value; }
        }

//以下为静态属性,一般用来书写代表类型的数据,例如人类,他的公有属性--人口
//静态属性添加static即可
        private static int myVar;

        public static int MyProperty
        {
            get { return myVar; }
            set { myVar = value; }
        }

如果你不写propfull,只写prop,然后按两下TAB的话,vs会直接帮你进行简易声明

public int MyProperty { get; set; }

这样的声明呢,也是语法糖的一种,这样申明好之后,也能够直接以class.Myproperty进行访问,但是他不具有安全性,是可以直接进行数据访问和修改的.

如果把上面的所有方法里删除set方法的话,那么他就变成了一个只读属性
就是只能访问get

        private int myVar;

        public int MyProperty
        {
            get { return myVar; }
            private set { myVar = value; } //设为私有
        }

以上呢,你就不能在这个类之外去访问set了,因为他已经成了一个私有方法,myVar只能在当前类中被访问

原文来自:C#特有的属性--成员安全访问和设置的语法糖,尊重自己,尊重每一个人;转发请注明来源!
0 0

发表评论