【发布时间】:2014-05-07 16:49:30
【问题描述】:
我有以下课程
public static class Translation
{
public enum LanguageCultureName
{
enGB,
zhCN
};
public static string Get(LanguageCultureName languageCultureName, string sValue)
{
if (languageCultureName == LanguageCultureName.enGB)
{
return sValue;
}
else
{
//get translated string
return ....
}
}
}
基本上我希望调用像
这样的方法是否最好在方法调用周围放置一个内联 If 语句,例如;
LanguageCultureName languageCultureName = LanguageCultureName.zhCN;
string sTranslation = languageCultureName == LanguageCultureName.enGB ? "My String to translate" : Translation.Get(languageCultureName, "My String to translate");
,或者直接调用它,如果是 enGB,则返回传递的字符串,如
LanguageCultureName languageCultureName = LanguageCultureName.zhCN;
string sTranslation = Translation.Get(languageCultureName, "My String to translate");
这有什么性能原因,还是个人喜好?
【问题讨论】:
-
你为什么要做第一个版本?这不就是重复逻辑吗?
-
好吧,如果我使用第一个版本,我会删除方法中的测试 if (languageCultureName == LanguageCultureName.enGB)
-
@Tommo1977,是的,您将删除“if”测试和方法调用,顺便说一下,它们没有相关的性能成本。通过这样做,您只需添加另一个(内联)if... Doh!
-
如果您担心优化,请考虑方法调用确实会增加额外的复杂性(如果编译器没有优化它)。但是,除了可读性之外,没有其他真正的理由选择其中之一。
-
@NathanA, Micro-Optimization Theater 不是关于文本资源翻译的真正原因... ;)
标签: c# if-statement inline