string resultString = dtMRow("mcode") + "_" + dtRow("pcode")
当我执行上面的代码时,我期望resultString
被分配给类似的东西"2356_ASDKJ"
,但是我得到了以下异常:
从字符串“_”到类型“Double”的转换无效。
为什么编译器试图将其"_"
转换为 a Double
?
让它把所有东西都放进去的最简单方法是什么strings
?
string resultString = dtMRow("mcode") + "_" + dtRow("pcode")
当我执行上面的代码时,我期望resultString
被分配给类似的东西"2356_ASDKJ"
,但是我得到了以下异常:
从字符串“_”到类型“Double”的转换无效。
为什么编译器试图将其"_"
转换为 a Double
?
让它把所有东西都放进去的最简单方法是什么strings
?
因为 dtMRow 返回双倍?
最好的方法是
String.Format("{0}_{1}", dtMRow("mcode"), dtRow("pcode"));
最棒的表演:
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()
是多余的
string resultString = string.format("{0}_{1}", dtMRow("mcode").ToString(), dtRow("pcode").ToString());
我会用它ToString()
来避免装箱操作。
为什么编译器试图将“_”转换为 Double?
因为里面的类型dtMRow("mcode")
大概是doubles
.
String.Format将为您将它们转换为字符串:
string result = string.Format("{0}_{1}", dtMRow("mcode"), dtRow("pcode"));
最好的方法是使用 System.Text.StringBuilder 的实例而不是字符串。在您的情况下,使用 ToString() 显式转换字符串中的任何内容:
dtMRow("mcode").ToString() + "_" + dtRow("pcode").ToString()