ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Microsoft .NET ΠΈ
Π΅Π·ΠΈΠΊΡŠΡ‚ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ C#
Generics
Generics
List<string> list = new List<string>();
list.Add(β€œhello”);
Console.WriteLine(list[0]);
 type safety
 code reuse
 performance
БъздаванС на generic класовС
class MyList<T> {
private T[] items = new T[10];
public void Set (int i, T item) {
items[i] = item;
}
public T Get (int i) {
return items[i];
}
}
ИзползванС на generic класовС
MyList<string> listStr = new MyList<string>();
listStr.Set(0, β€œhello”);
Console.WriteLine(listStr.Get(0));
MyList<int> listInt = new MyList<int>();
listInt.Set(0, 42);
Console.WriteLine(listInt.Get(0));
Generic класовС с ΠΏΠΎΠ²Π΅Ρ‡Π΅ Ρ‚ΠΈΠΏΠΎΠ²ΠΈ
ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ
class MyDictionary<K,V>{
...
}
Generic ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ
class MyClass<T> {
public void MyMethod<X>(X x) {
...
}
}
class MyClass {
public void MyMethod<T>(T t) {
...
}
}
Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ
public static IEnumerable SomeNumbers() {
yield return 3;
yield return 5;
yield return 7;
yield return 11;
}
foreach (int n in SomeNumbers()) Console.WriteLine(SomeNumbers());

.NET/C#_14