C#属性的正确语法
本文关键字:语法 属性 | 更新日期: 2023-09-27 17:59:03
根据MSDN文档,使用以下语法:
// A read-write instance property:
public string Name
{
get { return name; }
set { name = value; }
}
但是,以下代码是由VS2010为新库类自动生成的:
public string Name
{
get
{
String s = (String)ViewState["Name"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["Name"] = value;
}
}
在MSDN上显示的较短示例中,什么时候使用ViewState语法比较合适?
ViewState
是ASP.Net服务器控件的一个功能,可在回发过程中持久保存信息。
对于不在服务器控件中的简单属性,您应该使用自动实现的属性:
public string Name { get; set; }
第一个将值存储在类内的私有属性字段中,而第二个(尝试)将实际值存储在ViewState中。
因此,只有当您谈论启用了视图状态的ASP控件时,第二种情况才可能出现,这是所有可能情况的一个子集。
C#属性只是一块语法糖。这种结构
public Foo MyValue { get ; private set ; }
就像你编码的一样:
private Foo _myValue ;
public Foo
{
get
{
return _myValue ;
}
private set
{
this._myValue = value ;
}
}
无论哪种情况,实际生成的代码都是这样的:
private Foo _myValue ;
public Foo MyValue_get()
{
return this._myValue ;
}
private Foo MyValue_set( Foo value )
{
this._MyValue = value ;
}
如果您选择实例化自己的getter/setter,那么getter/sette的主体中会发生什么完全取决于您。没有"对"或"错":这取决于程序的需要。
相对于ViewState
,ViewState
是ASP.Net的一部分,它与属性的关系不大。您的示例只是将ViewState
项公开为公共读/写属性。
两者之间的区别在于,其中一个只是简单的旧C#属性,提供对类中(很可能)私有范围变量的访问。
另一个是返回从ASP.NET的ViewState中恢复的值。
这完全是两件不同的事情。