示例代码(替代代码如下),
// person.cs
using System;
class Person
{
private string myName ="N/A";
// Declare a Name property of type string:
public string Name
{
get
{
return myName;
}
set
{
myName = value;
}
}
public override string ToString()
{
return "Name = " + Name;
}
public static void Main()
{
Person person = new Person();
Console.WriteLine("Person details - {0}", person);
person.Name = "Joe";
Console.WriteLine("Person details - {0}", person);
}
}
不可以直接写,改myName
从private到public,不需要再声明一个public变量Name,也不需要使用get和set?
替代代码
// person.cs
using System;
class Person
{
public string myName ="N/A";
public override string ToString()
{
return "Name = " + myName;
}
public static void Main()
{
Person person = new Person();
Console.WriteLine("Person details - {0}", person);
person.myName = "Joe";
Console.WriteLine("Person details - {0}", person);
}
}
外部可见属性比字段更好,因为:
-
属性允许更好封装。字段是固定的实现,允许消费者直接访问。特性:
字段不能用于接口。这是测试驱动开发(界面优先)的障碍。
自动或自动实现的属性与字段一样易于声明,并且还经过优化以与字段同等执行。看here http://msdn.microsoft.com/en-us/library/bb384054.aspx.
声明外部可见字段(公共、受保护、受保护内部)是FxCop 违规. See 规则CA1051 http://msdn.microsoft.com/en-us/library/ms182141%28v=vs.100%29.aspx.
将字段更改为属性是重大改变,因为调用代码需要重新编译(也适用于二进制序列化)。
属性是公认的由 .NET 中的许多库执行 XML 序列化、WPF 绑定、ASP.NET 2 路绑定等任务,也由 Visual Studio 设计器提供。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)