-5
string resultString = dtMRow("mcode") + "_" + dtRow("pcode")

当我执行上面的代码时,我期望resultString被分配给类似的东西"2356_ASDKJ",但是我得到了以下异常:

从字符串“_”到类型“Double”的转换无效。

为什么编译器试图将其"_"转换为 a Double

让它把所有东西都放进去的最简单方法是什么strings

4

5 回答 5

7

因为 dtMRow 返回双倍?

最好的方法是

String.Format("{0}_{1}", dtMRow("mcode"), dtRow("pcode"));
于 2013-07-24T10:53:20.377 回答
1

最棒的表演:

string resultString = dtMRow("mcode").ToString() + "_" + dtRow("pcode").ToString();

平等的:

string resultString = string.Concat(dtMRow("mcode").ToString(), "_", dtRow("pcode").ToString());

最佳视图但性能最差:

string resultString = string.format("{0}_{1}", dtMRow("mcode").ToString(), dtRow("pcode").ToString());

最差的视图和最差的性能:少数对象的 stringBuilder

ps:.ToString()是多余的

于 2013-07-24T11:01:19.003 回答
1
string resultString = string.format("{0}_{1}", dtMRow("mcode").ToString(), dtRow("pcode").ToString());

我会用它ToString()来避免装箱操作。

于 2013-07-24T10:53:51.663 回答
1

为什么编译器试图将“_”转换为 Double?

因为里面的类型dtMRow("mcode")大概是doubles.

String.Format将为您将它们转换为字符串:

string result = string.Format("{0}_{1}", dtMRow("mcode"), dtRow("pcode"));
于 2013-07-24T10:54:14.050 回答
-1

最好的方法是使用 System.Text.StringBuilder 的实例而不是字符串。在您的情况下,使用 ToString() 显式转换字符串中的任何内容:

dtMRow("mcode").ToString() + "_" + dtRow("pcode").ToString()
于 2013-07-24T10:54:26.307 回答