正確的工作代碼:
int totalValue = 0;
int total = 0;
totalValue = int.Parse(Session["price"].ToString()) * int.Parse(Session["day"].ToString());
// This line
totalValue += Session["IsChauffeurUsed"].ToString().Equals("Yes", StringComparison.CurrentCultureIgnoreCase) ? 80 : 0;
問題:
您正在使用StringComparer
類的靜態屬性。 而不是使用枚舉StringComparison
。
作爲String.Equals(str1,str2,StringComparison.CurrentCultureIgnoreCase);
或str1.Equals(str2,StringComparison.CurrentCultureIgnoreCase);
既需要枚舉StringComparison因爲方法參數。
現在,這引發了一些問題,爲什麼你無法識別你的IDE中的這個錯誤。
這是因爲,由於StringComparer是抽象類和CurrentCultureIgnoreCase是靜態吸氣屬性,它返回類型StringComparer類的一個對象。
即
public static StringComparer CurrentCultureIgnoreCase { get; }
因此編譯器處理你的 「Equals
」 方法的Object Class
即 「Equals
」 的方法,
public static bool Equals(object objA, object objB);
對於一些其他的誰是好奇關於使用StringComparer類。
所以這裏有一個例子:
static void Main()
{
// Use these two StringComparer instances for demonstration.
StringComparer comparer1 = StringComparer.Ordinal;
StringComparer comparer2 = StringComparer.OrdinalIgnoreCase;
// First test the results of the Ordinal comparer.
Console.WriteLine(comparer1.Equals("value-1", "value-1")); // True
Console.WriteLine(comparer1.Equals("value-1", "VALUE-1")); // False
Console.WriteLine(comparer1.Compare("a", "b"));
Console.WriteLine(comparer1.Compare("a", "a"));
Console.WriteLine(comparer1.Compare("b", "a"));
// Test the results of the OrdinalIgnoreCase comparer.
Console.WriteLine(comparer2.Equals("value-1", "value-1")); // True
Console.WriteLine(comparer2.Equals("value-a", "value-b")); // False
Console.WriteLine(comparer2.Equals("value-1", "VALUE-1")); // True
Console.WriteLine(comparer2.Compare("a", "B"));
Console.WriteLine(comparer2.Compare("a", "A"));
Console.WriteLine(comparer2.Compare("b", "A"));
}
更多詳細信息如下https://www.dotnetperls.com/stringcomparer
編碼愉快。
+1只有答案突出顯示問題是由於使用StringComparer而不是正確的StringComparison。 – 2015-05-03 19:39:25