Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个比较器C#语法是如何工作的?_C#_.net_Generics_C# 4.0 - Fatal编程技术网

这个比较器C#语法是如何工作的?

这个比较器C#语法是如何工作的?,c#,.net,generics,c#-4.0,C#,.net,Generics,C# 4.0,我看到以下语法: var comparer = Comparer<TItem>.Default; var comparer=comparer.Default; 这个语法是如何工作的 我原以为比较器必须是新的默认值是一个静态属性,因此可以在没有比较器实例的情况下进行访问 无法通过实例引用静态成员。相反,它是通过类型名引用的 比较器在这里是一个类型名称。不必显式新建比较器的诀窍是默认值是一个属性,并且允许属性包含代码。这也适用于静态特性: static Comparer<T&g

我看到以下语法:

var comparer = Comparer<TItem>.Default;
var comparer=comparer.Default;
这个语法是如何工作的


我原以为
比较器
必须是新的

默认值
是一个静态属性,因此可以在没有
比较器
实例的情况下进行访问

无法通过实例引用静态成员。相反,它是通过类型名引用的


比较器
在这里是一个类型名称。

不必显式新建比较器的诀窍是默认值是一个属性,并且允许属性包含代码。这也适用于静态特性:

static Comparer<T> Default {
    get {
        ...
        return new ClassExtendingComparer<T>();
    }
}
静态比较器默认值{
得到{
...
返回新的ClassExtendingComparer();
}
}

这相当于一个使用字段/属性语法访问的无参数工厂方法。

您所说的确切语法是什么?你的意思是泛型?@shiva-Related-因此它是一个泛型访问器属性,它在引擎盖下调用一个方法,而不是静态数据字段。这意味着该属性可以使用指定的类型动态查找默认比较器?它是一个属性,而不是字段,因此可以执行代码。