【发布时间】:2010-05-09 16:16:56
【问题描述】:
我对这种新的语法糖很熟悉:
public string Name { get; set; }
但是,如果我是该变量的设置者以进行某种检查怎么办。例如,我想将应该设置为所有小写的整个字符串。
public string Name
{
get;
set
{
????
}
}
【问题讨论】:
我对这种新的语法糖很熟悉:
public string Name { get; set; }
但是,如果我是该变量的设置者以进行某种检查怎么办。例如,我想将应该设置为所有小写的整个字符串。
public string Name
{
get;
set
{
????
}
}
【问题讨论】:
你需要一个用于 getter 和 setter 的支持字段(你不能有一个部分自动的属性):
private string name;
public string Name
{
get
{
return name;
}
set
{
// do validation or other stuff
name = value.ToLower();
}
}
【讨论】:
你不能定义一个部分自动的属性。你必须用老式的方式做事:定义支持字段并自己实现 getter 和 setter 逻辑。
【讨论】:
private string _name;
public string Name
{
get {return _name;}
set
{
_name = value.ToLower();
}
}
【讨论】:
那么你就不能使用自动生成的get/set功能了:
string _name;
public string Name {
set { _name = value.ToLower(); }
set { return _name; }
}
【讨论】:
public string Name { get; set; } 这些被称为自动实现的属性。在 C# 3 及更高版本中,您可以将此语法用于属性。但是如果你想在设置之前对值进行任何操作,那么这没有帮助。另一个缺点是,你必须同时使用 set 和 get,你不能只声明 getter。另一种方法是将设置器设为私有。在您的情况下,您必须使用旧版本的属性。
private string _name;
public string Name
{
get {return _name;}
set
{
//do any operation
_name = value.ToLower();
}
}
【讨论】: