字符串语法问题

时间:2009-01-26 15:55:28

标签: c# string

我想要实现的是合并三个字符串。两个作为字符串提供; firstname和lastname,而第三个是简单的逗号/空格分隔符。给出以下代码行:

//Working code
var sep = ", ";
var fullName = myNewBO[0].LastName + sep + myNewBO[0].FirstName;

//Erronous code
var fullName = myNewBO[0].LastName + ", " + myNewBO[0].FirstName;

该字符串将返回到DataGridView中的单元格。虽然第一位代码执行时已经过了,但后者却没有。字符串未按预期显示在单元格中。有人能告诉我为什么后者不起作用?此外,如果您有更好的解决方案,请提供一个。

编辑:已解决。正如所怀疑的,并且通过几个答案指出问题在我的代码中的其他地方,两个替代方案完全相同。感谢语法建议:)

5 个答案:

答案 0 :(得分:8)

我更喜欢使用string.Format("{0}, {1}",myNewBO[0].LastName,myNewBO[0].FirstName)

现在你可以抽象出格式字符串,如果你想要它是“First Last”,例如你可以使用不同的格式化字符串。

修改

为了回应你的实际错误,我喜欢这里的其他人没有看到你应该使用的代码行有什么问题,所以问题变成:“你如何将这个值绑定到网格?”

你是在Eval()或代码背后做这个......

一个建议是添加一个ToString(string)方法,该方法接受格式字符串,然后您可以绑定到方法的评估。如果您的业务需求发生变化,您只需更改格式化字符串即可。

答案 1 :(得分:5)

string.Join(sep, new string[] {myNewBO[0].LastName, myNewBO[0].FirstName});

答案 2 :(得分:1)

你的两个电话真的没什么区别,我看不出错。你有什么例外。 Joel Coehoorn关于String.Join的回答非常适合您的需求。

答案 3 :(得分:1)

我怀疑你的代码中还有其他一些事情发生,你错误地发生了错误发生的地方。我不能为我的生活看到为什么这两个人的行为会有所不同。我建议你在两种情况下分配后记录值 - 我相信你会发现它们是相同的。

答案 4 :(得分:0)

它抛出了什么错误?这可以告诉你很多崩溃的原因。

你的电话对我来说在表面看起来都是有效的。我建议您确保LastName和FirstName是字符串而不是null。可以肯定的是,我猜你可以将.ToString()附加到FirstName和LastName的末尾。