为什么在字符串本身中包含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()
as shown on 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,当然。
你能编辑你的代码吗?即时通讯很难真正了解你在做什么。 – hvgotcodes 2010-08-05 02:26:14
我认为标签是错误的;你想在java或C#中做到这一点? – 2010-08-05 02:28:21
java标签显然是错误的(由另一个用户添加,而不是OP),所以我修复了它。 – Gabe 2010-08-05 06:01:01