2

我正在尝试做这样的事情:

  // some code...

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

但后来我得到编译错误:

运算符“>”不能应用于“字符串”和“字符串”类型的操作数。

那么最好的方法是什么?

4

6 回答 6

4

使用CompareTo()方法代替。

if(b.CompareTo(a) > 0)

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

这种方法;

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

检查这个DEMO

于 2013-01-14T11:44:42.013 回答
3
if(string.Compare(a, b) > 0)

您可以使用==&!=但不能使用其他运算符,请改用string.Compare

于 2013-01-14T11:44:30.557 回答
1

您可以使用CompareTo.

if (b.CompareTo(a) > 0) { /*Operate*/ }
于 2013-01-14T11:44:16.187 回答
1

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

于 2013-01-14T11:44:20.987 回答
1

您可以使用CompareTo

if(b.CompareTo(a) > 0)
于 2013-01-14T11:44:21.327 回答
1

如果您查看String 类,您会看到运算符>或未<为此类型定义,但ComapreTo方法是,这就是要走的路 - 如其他答案所述。

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

    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);            
    }
 }
于 2013-01-14T12:55:11.723 回答