C#属性的理解

来源:互联网 发布:科比06赛季场均数据 编辑:程序博客网 时间:2024/03/29 21:18

属性是这样的成员:它们提供灵活的机制来读取、编写或计算私有字段的值。可以像使用公共数据成员一样使用属性,但实际上它们是称为访问器的特殊方法。这使得数据在可被轻松访问的同时,仍能提供方法的安全性和灵活性。

1).属性使类能够以一种公开的方法获取和设置值,同时隐藏实现或验证代码。

2).get 属性访问器用于返回属性值而 set 访问器用于分配新值。这些访问器可以有不同的访问级别。

3).value 关键字用于定义由 set 索引器分配的值。

4).不实现 set 方法的属性是只读的。

属性的特点:
1)
允许调用方法,如同它们是公共数据成员。
2)
可以通过简单的名称进行访问。
3)
可以为静态成员或者实例成员。
4)
属性的get访问器没有参数。
5)
属性的set访问器包含隐式value参数。


举个例子:
using System;

public class Person

{

//私有字段_age,_name类外不能访问,可通过属性name,age访问

//属性是特殊的方法

    private string _name;

    private int _age;

   

   

    public string name //最基本的属性,未在get{}set{}里面提供控制操作

    {

       get //取值访问器

       {

                return this._name;

       }

       set //赋值访问器

       {

               this._name=value;

       }

    }

    public int age

    {

       get

       {

                if(this._name=="ben9144") //当实例的姓名设置为ben9144时,控制输出值为25

                {

                         return 25;

                }

                else

                {

                         return this._age;

                }

               

       }

       set

       {

               if(value>0 && value<100) //当实例的年龄设置控制为0-100间才有效

                {

                         this._age=value;

                }

                else

                {

                         Console.WriteLine("你输入的年龄不合理,必须在(0100)间!");

                }

       }

    }

   

}

public class MyProperty

{

public static void Main(string[] args)

{

           Person p =new Person();

           Console.Write("请输入一个人的姓名:");

           p.name=Console.ReadLine();

           Console.Write("请输入此人的年龄::");               

           p.age=Convert.ToInt32(Console.ReadLine());

           Console.WriteLine("输入的姓名:"+p.name); //通过name属性访问私有字段

           Console.WriteLine("输入的年龄:"+p.age); //通过age属性可以对私有字段_age提供可控制性的访问

}

}

结果:1.当输入的姓名为ben9144,则输出的年龄始终为25(输入年龄若超出0100,输出还是25岁但提示输入年龄不合理)2.当输入的姓名为其它的,年龄为实际输入(输入年龄若超出0100,提示输入年龄不合理)

原创粉丝点击