如何:声明和使用读/写属性(C# 编程指南)

 

C# 编程指南
如何:声明和使用读/写属性(C# 编程指南)
 
属性可以提供公共数据成员的便利,而又不会带来不受保护、不受控制以及未经验证访问对象数据的风险。这是通过“访问器”来实现的:访问器是为基础数据成员赋值和检索其值的特殊方法。使用 set 访问器可以为数据成员赋值,使用 get 访问器可以检索数据成员的值。
此示例演示 Person 类,该类具有两个属性:Name (string) 和 Age (int)。这两个属性都提供 getset 访问器,因此它们被视为读/写属性。
示例
C#
复制代码
class Person
{
    private string m_name = "N/A" ;
    private int m_Age = 0;
 
    // Declare a Name property of type string:
    public string Name
    {
        get
        {
            return m_name;
        }
        set
        {
            m_name = value;
        }
    }
 
    // Declare an Age property of type int:
    public int Age
    {
        get
        {
            return m_Age;
        }
 
        set
        {
            m_Age = value;
        }
    }
 
    public override string ToString()
    {
        return "Name = " + Name + ", Age = " + Age;
    }
}
 
class TestPerson
{
    static void Main()
    {
        // Create a new Person object:
        Person person = new Person();
 
        // Print out the name and the age associated with the person:
        System.Console.WriteLine( "Person details - {0}" , person);
 
        // Set some values on the person object:
        person.Name = "Joe" ;
        person.Age = 99;
        System.Console.WriteLine( "Person details - {0}" , person);
 
        // Increment the Age property:
        person.Age += 1;
        System.Console.WriteLine( "Person details - {0}" , person);
    }
}
输出
Person details - Name = N/A, Age = 0
Person details - Name = Joe, Age = 99
Person details - Name = Joe, Age = 100
可靠编程
C#
复制代码
public string Name
{
    get
    {
        return m_name;
    }
}
此外,您还可以公开一个访问器,而使另一个访问器成为私有的或受保护的。有关更多信息,请参见 非对称访问器可访问性。
声明了属性后,可像使用类的字段那样使用这些属性。这使得获取和设置属性值时都可以使用非常自然的语法,如以下语句中所示:
C#
复制代码
person.Name = "Joe" ;
person.Age = 99;
注意,属性 set 方法中可以使用一个特殊的 value 变量。该变量包含用户指定的值,例如:
C#
复制代码
m_name = value;
请注意用于使 Person 对象上的 Age 属性递增的简洁语法:
C#
复制代码
person.Age += 1;
如果将单独的 setget 方法用于模型属性,则等效代码可能类似于:
复制代码
person.SetAge(person.GetAge() + 1);
本示例中重写了 ToString 方法:
C#
复制代码
public override string ToString()
{
    return "Name = " + Name + ", Age = " + Age;
}
注意,程序中未显式使用 ToString。默认情况下,它由 WriteLine 调用来调用。
  (来源:msdn )
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值