为什么要在字符串本身中包含 String.Format ?
如果您正在寻找一个通用的“让我评估我在字符串中建立的任意表达式”,那么没有一个简单的答案。
相反,如果您正在研究如何从函数调用中为字符串提供参数,那么您已经把自己搞得一团糟,工作太辛苦了。
根据您的原始代码尝试这样的事情:
string result
= string.Format(
"{0}----{1}",
ReturnParamValue(siDTO, "siDTO.SuggestionItemID,siDTO.Title"));
但是,这不会完全起作用,因为您的原始代码似乎只提供一个值,并且您的格式字符串中有两个值 -{0}
将被您的函数中的值替换,并且{1}
保持不变。
你期待什么输出?
您的ReturnParamValue()
函数是否尝试在单个字符串中返回标签和值?如果是这样,并且它们是逗号分隔的,那么你可以试试这个:
var value = ReturnParamValue(siDTO, "siDTO.SuggestionItemID,siDTO.Title"));
var pieces = string.Split(',');
string result
= string.Format( "{0}----{1}", pieces[0], pieces[1]);
ReturnParamValue()
尽管如果这是您控制的方法,那么这确实太辛苦了。
8 月 6 日星期五更新
查看string.Format()
MSDN 上显示的声明:
public static string Format(
string format,
params Object[] args
)
与您可能在 C 中看到的特殊大小写不同,处理多个参数printf()
的方式没有什么特别或不寻常的地方。string.Format()
关键是params关键字,它要求编译器提供一点“语法糖”,它将参数组合成一个数组。
这里的关键是,如果您已经传递了一个单曲,则不会发生包装object[]
- 所以如果您愿意,您可以执行以下操作:
object[] parameters
= ReturnParamValues(siDTO, "siDTO.SuggestionItemID,siDTO.Title");
string result
= string.Format("{0}----{1}----{2}", parameters);
但是,如果我在我维护的任何代码库中看到类似的东西,我会将其视为代码异味并寻找更好的方法来解决问题。
仅仅因为它是可能的并不意味着它是可取的。YMMV,当然。