有更好看的方式吗? (int toString)

时间:2011-05-03 20:39:48

标签: c# tostring

有时ToString看起来很丑陋。在下面的例子中是否有更聪明的东西替换().ToString()?

string value;
int i;
...

value = (1 + i).ToString();

其次,你更喜欢什么?

value = "0";

value = (0).ToString();

我知道我更喜欢“0”的可读性,但另一方面它并不像第二种那样代表值。现在,如果有某种ToString运算符......

挑剔,但我现在很无聊。 ;)


附录
这是我写的代码,让我问上面的问题。

List<SelectListItem> result = new List<SelectListItem>(1 + items.Count);

result.Add(new SelectListItem { Text = string.Empty, Value = "0" });
for (int i = 0; i < items.Count; ++i)
{
    result.Add(new SelectListItem { 
        Text = items[i],
        Value = (1 + i).ToString()
    });
}

6 个答案:

答案 0 :(得分:4)

().ToString()是第一件做事最简洁的方法。任何熟悉表达方式工作的人都不应该在阅读它时遇到任何麻烦。

(0).ToString()和做"a".ToCharArray()一样愚蠢。如果您有所需值的文字,请使用它。

答案 1 :(得分:3)

事实上,我总是使用Convert.ToString(i + 1),而不是(i + 1).ToString()。前者是无效的。

我永远不会使用value = (0).ToString()

修改

由于我真的很喜欢这个解决方案,我会尝试更好地保护它:

优点:

  1. 这是很常见的习语,不是特别难读。
  2. 它适用于值和引用类型 - 因此它增加了代码内聚力,因为所有转换看起来完全相同。
  3. 可用于代替大多数演员阵容和转换。
  4. 它是null安全的 - 例如,在处理DAO类或UI绑定时非常有用。
  5. 缺点:

    1. 它比演员要慢(但不一定比其他类型的转换慢,如object.ToString())。
    2. 可能会隐藏空引用异常 - 这通常不建议在核心业务类中使用(但同样,在这种代码中很少使用文本进行数字转换)。

答案 2 :(得分:1)

如果您需要将0表示为整数,请不要使用字符串,请使用整数。

至于将计算结果转换为字符串:

var res = string.Format("{0}", i + 1);

您不需要将()与字面整数一起使用 - 0.ToString()有效。

答案 3 :(得分:1)

ToString可能对本地化有用 - &gt; (1000).ToString("N")。否则,我不明白为什么要使用(0).ToString()代替"0"

答案 4 :(得分:1)

丑陋是一个丑陋的词。例如,对我来说,完全是主观的,但你的写作风格1 + i是完全错误的。数学家从不说 1 + n ,他们说 n + 1 。但这只是我的偏好。在技​​术上很难回答那些意见问题。

答案 5 :(得分:0)

我一直在使用string.Format("{0}", 1 + i)

我宁愿选择"0",为什么要拨打额外的方法?