无法比较字符串>串

时间:2013-01-14 11:43:21

标签: c# string compare

我正试图做这样的事情:

  // some code...

  string a="aa";
  string b="bb";
  // ...
  if(b>a)    // suppose to be true
   {
     // do somthing
   }

但后来我得到了编译错误:

  

运营商'>'不能应用于'string'类型的操作数   '字符串'

那么最好的方法是什么?

6 个答案:

答案 0 :(得分:5)

使用 CompareTo() 方法代替。

if(b.CompareTo(a) > 0)
  

比较两个指定的String对象并返回一个整数   表示它们在排序顺序中的相对位置。

这种方法;

  
      
  • 如果b大于a或a为null,则返回大于零。
  •   
  • 如果b小于a,则返回小于零。
  •   
  • 如果b在排序顺序中与a具有相同的位置,则返回0.
  •   

检查此 DEMO

答案 1 :(得分:3)

if(string.Compare(a, b) > 0)

您可以使用==& !=但不是其他运营商,请改用string.Compare

答案 2 :(得分:1)

您可以使用CompareTo

if (b.CompareTo(a) > 0) { /*Operate*/ }

答案 3 :(得分:1)

无法像这样比较字符串,你应该使用String.Compare(),如MSDN上的这篇文章所示How to: Compare Strings (C# Programming Guide)

答案 4 :(得分:1)

您可以使用CompareTo

if(b.CompareTo(a) > 0)

答案 5 :(得分:1)

如果查看String class,您会看到没有为此类型定义运算符><,但是ComapreTo方法就是这样,那就是go - 如其他答案中所述。

如果要在字符串类型上使用这些运算符,则必须实现自定义字符串类型并为其重载这些关系运算符。该课程可能如下所示:

    public class MyString
    {
        string str;

        public MyString(string str)
        {
            this.str = str;
        }

        public static implicit operator MyString(string str)
        {
            return new MyString(str);
        }

        public static bool operator < (MyString str1,  MyString str2)
        {
            return (str1.str.CompareTo(str2.str) < 0);
        }

        public static bool operator >(MyString str1, MyString str2)
        {
            return (str1.str.CompareTo(str2.str) > 0);
        }

        public static bool operator ==(MyString str1, MyString str2)
        {
            return (str1.str.CompareTo(str2.str) == 0);
        }

        public static bool operator !=(MyString str1, MyString str2)
        {
            return (str1.str.CompareTo(str2.str) != 0);
        }

        // other methods and overloads
    }


class Program
{
    static void Main(string[] args)
    {
        MyString str1 = "abba";
        MyString str2 = "abbb";
        MyString str3 = "abba";
        MyString str4 = "aabb";

        Debug.Assert(str1 < str2);
        Debug.Assert(str1 == str3);
        Debug.Assert(str1 > str4);            
    }
 }