我需要在C#setter中进行一次小检查 - 检查属性是否为空字符串.现在我最终得到了这样的结构:
private string property;
public string Property
{
get
{
return property;
}
set
{
if (value.IsNotEmpty())
{
property = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
代替
public string Property { get; set; }
Run Code Online (Sandbox Code Playgroud)
6行代替1.有没有办法插入逻辑,但保持它浓缩和优雅?
没有
自动属性(或"简短形式")可以具有访问修饰符,但没有逻辑.你坚持使用你拥有的代码.
您可以做的一件事是将您封装string在一个允许从字符串(和字符串)进行隐式转换的对象中,并IsNotEmpty在分配给基础值之前进行检查.也不是最优雅的解决方案,但它可能会让你保持语法糖.
不,这种情况没有语法糖(至少高达C#5.0 - 2014年的当前情况).
可以不同的方式格式化它们,并使用?:替代if,如果它看起来对你不够好:
public string Property
{
get { return property; }
set { property = value.IsNotEmpty() ? value: property;}
}
Run Code Online (Sandbox Code Playgroud)