哪个更好用?使用To.Lower()。EndsWith(value)或To.EndsWith(value,StringComparison.InvariantCultureIgnoreCase)

时间:2014-01-20 05:33:49

标签: c#

如果我们有两个代码

  1. url.ToLower().EndsWith("_vti_bin/sanjay.aspx")
  2. url.EndsWith("_vti_bin/sanjay.aspx", StringComparison.InvariantCultureIgnoreCase)
  3. 哪一个使用效率高,为什么?

3 个答案:

答案 0 :(得分:0)

当你绝对需要基于文化的语言比较时,你不应该更喜欢StringComparison.InvariantCultureIgnoreCase,在这种情况下,ToLower()没问题,

否则,当您想要比较不同文化中的语言字符串时,可以使用StringComparison.InvariantCultureIgnoreCase

答案 1 :(得分:0)

第二个更有效,因为

  1. ToLower()是额外的函数调用,与第二个选项相比。
  2. EndsWith(someString)会致电EndsWith(someString, StringComparison)
  3. 如果你解编译System.string(我用过ILSpy),你会发现这个

    1. EndsWith(str)

      [__DynamicallyInvokable]
      public bool EndsWith(string value)
      {
        return this.EndsWith(value, string.LegacyMode ? StringComparison.Ordinal : StringComparison.CurrentCulture);
      }
      
    2. EndsWith(str, StringComparision)

      [__DynamicallyInvokable, ComVisible(false), SecuritySafeCritical]
      public bool EndsWith(string value, StringComparison comparisonType)
      {
        .. actual implementation
      }
      

答案 2 :(得分:-1)

第二个,首先你要调用两个函数。