Csharp/CSharp Tutorial/Generic/Introduction

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Generic Type Reflection

using System;
using System.Collections.Generic;
using System.ruponentModel;
    class GenericTypeReflection
    {
        static void Main()
        {
            string listTypeName = "System.Collections.Generic.List";
            Type defByName = Type.GetType(listTypeName);
            Type closedByName = Type.GetType(listTypeName + "[System.String]");
            Type closedByMethod = defByName.MakeGenericType(typeof(string));
            Type closedByTypeof = typeof(List<string>);
            Console.WriteLine(closedByMethod == closedByName);
            Console.WriteLine(closedByName == closedByTypeof);
            Type defByTypeof = typeof(List<>);
            Type defByMethod = closedByName.GetGenericTypeDefinition();
            Console.WriteLine(defByMethod == defByName);
            Console.WriteLine(defByName == defByTypeof);
        }
    }

Life without generics

using System; 
 
class NonGen {  
  object ob;
    
  public NonGen(object o) {  
    ob = o;  
  }  
  
  public object getob() {  
    return ob;  
  }  
 
  public void showType() {  
    Console.WriteLine("Type of ob is " + ob.GetType()); 
  }  
}  
  
class MainClass {  
  public static void Main() {  
    NonGen iOb = new NonGen(102);  
    iOb.showType(); 
 
    int v = (int) iOb.getob();  
    Console.WriteLine("value: " + v);  
  
    Console.WriteLine();  
  
    NonGen strOb = new NonGen("Non-Generics Test");  
    strOb.showType(); 
 
    String str = (string) strOb.getob();  
    Console.WriteLine("value: " + str);  
  }  
}
Type of ob is System.Int32
value: 102
Type of ob is System.String
value: Non-Generics Test