2016-10-30 4 views
-2

Ich habe einen einfachen Code, wenn ich die Zeile my.Test<int>(); zu my.Test<string>(); ändere, funktioniert es, aber es funktioniert nicht für int.Der Typ int muss ein Referenztyp sein, um ihn als Parameter zu verwenden

class Program 
{ 
    class MyClass 
    { 
     public void Test<T>() 
      where T : class  // Generic Constraint 
     { 
      Console.WriteLine("Hello"); // Prints Hello 
     } 
    } 

    static void Main() 
    { 
     MyClass my = new MyClass(); 
     my.Test<int>(); 

     Console.ReadKey(); 
    } 
} 
+4

'Wo T: Klasse'. ['int' ist eine' struct'] (https://msdn.microsoft.com/en-us/library/t63sy5hs.aspx). –

+2

Ich meine .. Sie haben buchstäblich eine generische Einschränkung, die besagt, dass der Typparameter eine Klasse sein sollte. –

+2

Mein Benzinauto funktioniert nicht, wenn ich versuche, Diesel hineinzustellen. Warum ist das? –

Antwort

3

In Ihrem Code haben Sie

where T : class 

Und int ist keine Klasse. Deshalb funktioniert es nicht.

Verwandte Themen