首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >可以为空的ToString()

可以为空的ToString()
EN

Stack Overflow用户
提问于 2010-03-16 01:11:53
回答 4查看 35.8K关注 0票数 148

我随处可见像这样的结构:

代码语言:javascript
复制
int? myVar = null;
string test = myVar.HasValue ? myVar.Value.ToString() : string.Empty;

为什么不简单地使用:

代码语言:javascript
复制
string test = myVar.ToString();

这不是一模一样的吗?至少Reflector这样说:

代码语言:javascript
复制
public override string ToString()
{
  if (!this.HasValue)
  {
    return "";
  }
  return this.value.ToString();
}

那么,这是正确的(较短的版本)还是我漏掉了什么?

EN

回答 4

Stack Overflow用户

发布于 2010-03-16 01:14:09

我认为许多人有这样的检查,因为这不是一个对象的自然行为,可以持有空值。

票数 14
EN

Stack Overflow用户

发布于 2010-03-16 01:17:22

不,你是对的,更短的版本与其他人在这方面所做的是一样的。我倾向于大量使用的另一个结构是空合并运算符,而不是带有空值的三元结构。这也可以保护你不受空值的影响。对于ToString(),它不是必需的(正如您所指出的),但是对于默认的int值(例如),它工作得很好,例如:

代码语言:javascript
复制
int page = currentPage ?? 1;

这使您可以执行页上的所有整数操作,首先显式地检查空并调用currentPage中的值(其中currentPage是一个整数?可能是作为参数传递的)

票数 5
EN

Stack Overflow用户

发布于 2013-04-02 05:06:17

我知道,这是很久以前的事了,但是...我怀疑这是因为像int这样的可空类型?.ToString()方法不允许使用格式字符串。参见How can I format a nullable DateTime with ToString()?。也许在原始代码中,.ToString()中有一个格式字符串,或者程序员可能忘记了没有格式字符串的.ToString()在可以为still的类型上仍然可用。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2449008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档