Csharp/CSharp Tutorial/Generic/Introduction — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
(нет различий)
|
Текущая версия на 15:14, 26 мая 2010
Generic Type Reflection
<source lang="csharp">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); } }</source>
Life without generics
<source lang="csharp">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); }
}</source>
Type of ob is System.Int32 value: 102 Type of ob is System.String value: Non-Generics Test