我有一个声明如下的属性:
public decimal? MyProperty { get; set; }
我需要将此值作为字符串传递给另一个方法,因此我看到的唯一方法如下:
MyProperty == null ? null : MyProperty.ToString()
当您将许多类似的属性传递给方法时,这看起来非常混乱。
有谁知道是否有更好,更简洁的写法?
哦,如果有人能想到这个问题的更合适的标题,请随时更改它......
我有一个声明如下的属性:
public decimal? MyProperty { get; set; }
我需要将此值作为字符串传递给另一个方法,因此我看到的唯一方法如下:
MyProperty == null ? null : MyProperty.ToString()
当您将许多类似的属性传递给方法时,这看起来非常混乱。
有谁知道是否有更好,更简洁的写法?
哦,如果有人能想到这个问题的更合适的标题,请随时更改它......
您可以使用Nullable<T>.ToString()
覆盖...
var s = MyProperty.ToString(); // returns "" if MyProperty is null
您可以使用 HasValue 而不是比较:
MyProperty.HasValue ? MyProperty.Value.ToString() : null;
使字符串在包含该属性的类上获取属性,并且您需要获取字符串版本不会很混乱。
public decimal? MyProperty { get; set; }
public string MyPropertyString
{
get
{
return MyProperty.HasValue ? MyProperty.Value.ToString() : null;
}
}
您可以在 Decimal 上声明扩展方法。
public static string Str(this decimal? value)
{
return value == null ? null : MyProperty.ToString()
}
然后你这样称呼它:
MyProperty.Str()
如果可以使用零而不是 null,则:
(MyProperty ?? 0).ToString()
否则添加扩展方法:
public static string AsString(this decimal? val)
{
return val == null ? null : val.Value.ToString();
}
// Use:
MyProperty.AsString() // This will NEVER cause NullReferenceException