今天在使用以下行提交补丁时注意到这一点:
lblCompletionTime.Text = String.Concat(trainingSkill.EndTime.ToLocalTime())
我可以理解为什么贡献者使用上面的语法连接两个字符串以形成多部分日期/时间字符串。
是否有一些隐藏的原因导致String.Concat()的单个参数重载,或者语言设计者是否包含“完整性”。
我用以下代码替换了
lblCompletionTime.Text = trainingSkill.EndTime.ToLocalTime().ToString(CultureInfo.CurrentCulture)
具有相同的输出。
答案 0 :(得分:10)
String.Concat(Object)在传递null时给出String.Empty; ToString会因空指针异常而崩溃。
答案 1 :(得分:4)
我同意它没有多大意义,特别是考虑到这是实施:
public static string Concat(object arg0)
{
if (arg0 == null)
{
return Empty;
}
return arg0.ToString();
}
但它确实验证参数不是null
所以我猜这是件事。你仍然没有连接任何东西,所以我认为这个方法可以被称为
String.ToStringSafe(Object obj) { }
或类似的东西,以更好地表达该功能实际上做了什么。
答案 2 :(得分:3)
根据MSDN,String.Concat(object)
创建a的String表示形式 指定的对象。
答案 3 :(得分:2)
通过查看String.Concat(object)的文档,我看到的唯一优势是它接受null并返回一个空字符串,与object.ToString()相比,这会带来一个优势。 NullReferenceException异常。 在您的示例中,它没有帮助,因为如果trainingSkill.EndTime为null,则在调用ToLocalTime时程序将中断。 我鼓励你纠正,但我认为没有必要将CultureInfo.CurrentCulture作为参数传递,因为它是DateTime.ToString()的默认行为
答案 4 :(得分:1)
在C#中,它可能没什么价值(除了null值的自动空字符串)。
在.Net中,我可以使用这种方法签名在函数式语言中非常有用。
答案 5 :(得分:0)
使用String.Concat(Object)
将对象转换为字符串是该函数的重载行为的行为。
String.Concat方法(对象)
创建指定对象的String表示。