国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > php教程 > 浅谈C#的属性

浅谈C#的属性

来源:程序员人生   发布时间:2016-04-23 09:36:52 阅读次数:2431次

   属性可以是 类(class)、结构(struct)、接口(interface)的命名成员,他提供灵活的机制来读取、写入、或计算私有(private)字段的值,属性可以看做是公共(public)字段的成员,但他实际上是定义了1个“访问器”的特殊方法让私有字段的值可以被读写或操作。

   说的形象点吧,比如我们定义1个person类里面有1个私有成员 private string name; 在外界我们实例化1个person对象per,要求为per起个名字,并且输出这个名字,也就是为per.name赋1个值,然后输出??经过前面的学习我们知道,类中的private修饰的变量外界对象是访问不到的,(没法直接per.name="HC666"来弄定^_^) 因此只能在类里面定义1个public修饰的setname与getname方法将“HC666”作为参数来进行写入与输出,这样有点繁琐,这个时候“属性”就该登场了,我们为name定义1个读写属性Name就能够弥补这个不足。

“访问器”

            属性的访问器包括有获得或设置属性的可履行语句,访问器的声明可包括1个get访问器(表示只读),或1个set访问器(表示只写),或两个同时包括(表示可读可写)。(上面的例子中我们使用get访问器输出name,使用set访问器写入

 

定义属性:

             上面的例子中我们可以为name 定义1个读写属性Name,使用外界对象能够访问的public修饰符

         private string name;     //声明name变量

         public string Name     //声明变量的属性,读写

            {  

               get { return name;  }   //定义读访问器,其实就是1个方法

                           set { name = value;  }  //定义写访问器,set 方法有1个隐含的参数value

             }

        再定义1个只读属性吧,比如我们的年龄 age 是固定的只读

        private uint age=10;  //声明变量 age

        private string Age     //声明变量的属性,只读

            {  

               get { return age;  }   //读访问器

             }


属性的实例:


using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test1 { class person { //定义变量name,并且为name定义1个读写属性 private string name; //定义属性 public string Name {//访问器 get { return name; } set { name = value; } //set自带1个value参数 } //定义变量age,并且为age定义1个只读属性 private uint age=10; public uint Age { get { return age; } } } class Program { static void Main(string[] args) { person per = new person(); per.Name = "HC666"; //履行写入属性 Console.WriteLine("我的名字叫:{0} 今年 {1} 岁了",per.Name,per.Age); //读属性 } } }


结果:

 

 

抽象属性:

          前面也说了,属性可使类、结构、接口的成员,自然也能够是抽象类的抽象属性了,抽象属性同抽象方法1样在派生类中被实现。

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test1 {//定义1个person抽象类 abstract class person {//定义抽象属性 public abstract string Name {//读写 get; set; } public abstract uint Age {//只读 get; } } //定义派生类 class student : person { private string name; private uint age=10; //实现抽象属性 public override string Name { get { return name ; } set { name=value; } } public override uint Age { get { return age; } } } class Program { static void Main(string[] args) { student stu = new student(); stu.Name = "HC666"; //履行写入属性 Console.WriteLine("我的名字叫:{0} 今年 {1} 岁了",stu.Name,stu.Age); //读属性 } } }
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生