正确的工作代码:
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
类的静态属性。而是使用 enum StringComparison
。
作为String.Equals(str1,str2,StringComparison.CurrentCultureIgnoreCase);
或str1.Equals(str2,StringComparison.CurrentCultureIgnoreCase);
两者都将枚举 StringComparison 作为方法参数。
现在这引发了一些问题,为什么您无法在您的 ide 中识别出这个错误。
这是因为,由于StringComparer是一个抽象类,而CurrentCultureIgnoreCase是一个静态 getter 属性,它返回一个StringComparer类类型的对象。
IE,
public static StringComparer CurrentCultureIgnoreCase { get; }
因此,编译器将您的 " "方法Equals
视为Equals
Object Class
IE,
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
快乐编码。