【譯】在非泛型類中建立泛型方法

反骨仔發表於2019-01-14

目錄:https://www.cnblogs.com/liqingwen/p/10261436.html

可以建立泛型類,像這樣

    class ThingWriter<T>
    {
        public void Write(T thing)
        {
            Console.WriteLine(thing);
        }
    }

這是一個泛型類,它使用型別 T 作為 Write 方法中的方法引數。可以按這種方式去使用:

  var w = new ThingWriter<int>();

  w.Write(42);

即使類本身不是泛型,也可以建立泛型方法。

    class ThingWriter
    {
        public void Write<T>(T thing)
        {
            Console.WriteLine(thing);
        }
    }

請注意, ThingWriter 類本身並非泛型。需要這樣呼叫泛型方法:

  var w = new ThingWriter();

  w.Write<int>(42);

或者通過利用泛型型別去推斷,編譯器可以通過傳遞給 Write 方法的型別 int 來確定(計算出)實際的型別。

  var w = new ThingWriter();

  w.Write(42);

章節:Creating Generic Methods in Non-GenericClasses
譯書名:《C# 奇淫巧技 — 編寫更優雅的 C#》
原書名:《C# Tips — Write Better C#》
網址:https://leanpub.com/cstips

相關文章