我有一个属性:
public decimal? DejanskaKolicina { get; set; }
和Resharper告诉我:
明确指定字符串转换中的文化
但如果我使用:
DejanskaKolicina.ToString(CultureInfo.CurrentCulture)
我总是得到以下信息:
ToString方法有0个参数但是用1个参数调用
如果我更改小数属性以使其不再可为空,那么它可以工作。如何在可空属性上使用ToString(CultureInfo.CurrentCulture)
?
答案 0 :(得分:7)
ToString
仅存在特定的decimal
重载,因此您只需为decimal
调用它即可使其工作:
DejanskaKolicina == null ? String.Empty : DejanskaKolicina.Value.ToString(CultureInfo.CurrentCulture)
答案 1 :(得分:3)
您应该单独处理null
,如下所示:
DejanskaKolicina == null ? "N/A" : DejanskaKolicina.Value.ToString(CultureInfo.CurrentCulture)
答案 2 :(得分:0)
使用可空对象的Value属性:
DejanskaKolicina == null ? "" : DejanskaKolicina.Value.ToString(CultureInfo.CurrentCulture);
答案 3 :(得分:0)
我想,这个例子可以帮到你:
可以使用可空类型,与使用常规值类型的方式相同。实际上,内置的隐式转换用于在相同类型的可空和非可空变量之间进行转换。这意味着您可以将标准整数分配给可以为空的整数,反之亦然:
int? nFirst = null;
int Second = 2; nFirst = Second; // Valid
nFirst = 123; // Valid
Second = nFirst; // Also valid
nFirst = null; // Valid
Second = nFirst; // Exception, Second is nonnullable.
在查看上面的语句时,只要可空变量不包含null,就可以看到可空和不可变的变量可以交换值。如果它包含null,则抛出异常。为了避免抛出异常,您可以使用可空的HasValue属性:
if (nFirst.HasValue) Second = nFirst;
如您所见,如果nFirst有值,则会发生分配;否则,将跳过作业。