C# 具有可为空数据类型的ToString()

C# 具有可为空数据类型的ToString(),c#,C#,我需要一个可为null的int,并将其格式化为示例中的值不为null时的格式ToString()不适用于空值。如何最好地处理这个问题 int? i = 5555; string p = i.ToString("#,##0"); Console.WriteLine(p); 只需检查null int? i = 5555; string p; if (i.HasValue) p = i.Value.ToString("#,##0"); else p = string.Empty

我需要一个可为null的int,并将其格式化为示例中的值不为null时的格式
ToString()
不适用于空值。如何最好地处理这个问题

int? i = 5555;

string p = i.ToString("#,##0");
Console.WriteLine(p);
只需检查null

int? i = 5555;
string p;
if (i.HasValue)
     p = i.Value.ToString("#,##0");
else
     p = string.Empty;

Console.WriteLine(p);
只需检查null

int? i = 5555;
string p;
if (i.HasValue)
     p = i.Value.ToString("#,##0");
else
     p = string.Empty;

Console.WriteLine(p);
如果您使用的是C#6或更高版本,则可以使用安全导航操作符:

string p = i?.ToString("#,##0");
否则,可以使用条件表达式:

string p = i.HasValue ? i.Value.ToString("#,##0") : null;
如果您使用的是C#6或更高版本,则可以使用安全导航操作符:

string p = i?.ToString("#,##0");
否则,可以使用条件表达式:

string p = i.HasValue ? i.Value.ToString("#,##0") : null;

实例函数不是解决问题的方法。如果没有实例(null),那么就没有可以调用实例函数的内容。但是,已经有一个答案以以下形式出现在对象的一部分中:

a、 如果a为null,则等于(b)将失败。这就是为什么会有静态函数Object.Equals(a,b)。由于a是作为参数给出的,所以可以在null上检查它。就在函数调用a.Equals(b)之前


另一种方法是在打印前检查null。因为这样写起来很冗长,C#开发人员添加了and运算符。你是否能使用它们取决于你的编译器所使用的C语言版本。

实例函数不是最好的选择。如果没有实例(null),那么就没有可以调用实例函数的内容。但是,已经有一个答案以以下形式出现在对象的一部分中:

a、 如果a为null,则等于(b)将失败。这就是为什么会有静态函数Object.Equals(a,b)。由于a是作为参数给出的,所以可以在null上检查它。就在函数调用a.Equals(b)之前


另一种方法是在打印前检查null。因为这样写起来很冗长,C#开发人员添加了and运算符。你是否能使用它们取决于你的编译器使用哪种版本的C语言。

当i为null时,输出应该是什么?你的代码甚至不能编译。可为空的
ToString
没有参数
var p=i?.Value.ToString(“#,##0”)
var p=i.GetValueOrDefault().ToString(“#,##0”)
(i??默认值(int)).ToString()
i?.ToString(“#,##0”)ToString
没有参数
var p=i?.Value.ToString(“#,##0”)
var p=i.GetValueOrDefault().ToString(“#,##0”)
(i??默认值(int)).ToString()
i?.ToString(“#,##0”)
或如果
null
将作为null
i
的结果,则只需
i?.ToString(“#,#0”)。有什么区别?它也做同样的事情好吧,它没有那么复杂,但更确切地说,它不值得自己给出答案,但它值得像querent这样不了解这一点的人学习,因此值得添加。这很公平。TBH这是一个一次性的回答,如果
null
将作为null
i
的结果,那么只需
i?.ToString(“#,#0”)。有什么区别?它也做同样的事情好吧,它没有那么复杂,但更确切地说,它不值得自己给出答案,但它值得像querent这样不了解这一点的人学习,因此值得添加。这很公平。这是一个有点随意的回答