List操作符==在C#语言规范版本4中

在C#语言规范版本4中,1.6.7.5运算符是关于List< T>的信息。运算符:==和!=。但是我找不到List< T>?我错过了什么吗?

1.6.7.5运算符的示例代码:

List<int> a = new List<int>();
a.Add(1);
a.Add(2);
List<int> b = new List<int>();
b.Add(1);
b.Add(2);
Console.WriteLine(a == b); // Outputs "True" => here I get False as well
b.Add(3);
Console.WriteLine(a == b); // Outputs "False"
该规范确实是正确的,虽然令人困惑。该规范定义了一个名为List(较差的命名选择)的类。

The following table shows a generic class called List, which implements a growable list of objects. The class contains several examples of the most common kinds of function members.

这个类可以在1.6.7节的规范中看到。 Equals操作符过载,与上述输出相匹配。也许应该选择一个更好的名字。

static bool Equals(List<T> a, List<T> b) {
    if (a == null) return b == null;
    if (b == null || a.count != b.count) return false;
    for (int i = 0; i < a.count; i++) {
        if (!object.Equals(a.items[i], b.items[i])) {
            return false;
        }
    }
  return true;
}
http://stackoverflow.com/questions/11852596/listt-operator-in-the-c-sharp-language-specification-version-4

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:List操作符==在C#语言规范版本4中