簡體   English   中英

比較器 <T> 。默認財產

[英]Comparer<T>.Default Property

這個問題來自於這個小奇跡: Comparer<T>.DefaultComparer<T>.Default 我想知道作者寫的是什么:

如果要比較的類型已實現IComparable<T>或者類型為System.Nullable<T> ,其中T實現IComparable ,則System.Collections.Generic命名空間中有一個名為Comparer<T> ,它暴露了一個屬性調用Default,它將創建一個單例,表示該類型項的默認比較器。

例如:

我有一節課:

class Foo : IComparable<Foo> { ... }
public class FooComparer : IComparer<Foo> { ... }

Comparer類實現為public abstract class Comparer<T> : IComparer, IComparer<T> 我的問題是Default Property的整體運作方式,它的作用以及它是如何工作的?

謝謝

Comparer<T>.Default不使用您的FooComparer類。 它只返回內部類GenericComparer<T>的實例。
這個類具有T必須實現IComparable<T>的約束,因此它可以簡單地將調用委托給它Compare方法來傳遞它傳遞的實例的Compare方法。

像這樣的東西:

internal class GenericComparer<T> : Comparer<T> where T : IComparable<T>
{
    public override int Compare(T x, T y)
    {
        if (x != null)
        {
            if (y != null)
                return x.CompareTo(y);
            return 1;
        }
        else
        {
            if (y != null)
                return -1;
            return 0;
        }
    }

    // ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM