按值比较字符串与可字符串对象的最合适方法是什么?

时间:2012-12-17 22:22:34

标签: c# reference refactoring resharper windows-store-apps

有了这个:

if (args.Parameter == "ContactIntermediaryPage")

...在NavigatedTo()事件处理程序中,Resharper告诉我:“可能的非预期参考比较;要获得值比较,请将左侧投射到'string'类型”

所以我应该将其更改为以下之一,如果是,则将其更改为:

if ((string)args.Parameter == "ContactIntermediaryPage")

if (args.Parameter.ToString() == "ContactIntermediaryPage")

if (args.Parameter.Equals("ContactIntermediaryPage"))

2 个答案:

答案 0 :(得分:2)

我会选择第三个,使其不敏感(如果这适用于您的情况)

if (args.Parameter.ToString().Equals(
               "ContactIntermediaryPage", 
                StringComparsion.InvariantCultureIgnoreCase))

换句话说,如果您要与等式string的{​​{1}} make left 部分进行比较,以便向编译器和您的读者说明代码,你将在那条线上做什么。

答案 1 :(得分:1)

第一个如果args.Parameter总是一个字符串。它节省了额外的电话。

否则第二个,如果且仅当所有可能的字符串都在您的代码中时。如果是这样,我会将字符串定义为常量,并在可能的情况下在一个地方引用它们。

如果以上都不是真的,那就去找Tigran的答案。