zauważyłem ktoś zrobił to w C# - zauważył nowy()Co osiąga ogólne wpisywanie do nowej instancji?
public class MyClass<T> where T: new(){
//etc
}
Co to osiągnąć?
zauważyłem ktoś zrobił to w C# - zauważył nowy()Co osiąga ogólne wpisywanie do nowej instancji?
public class MyClass<T> where T: new(){
//etc
}
Co to osiągnąć?
Ogranicza to typową MyClass<T>
do pracy tylko z instancjami T
, które mają dostępny konstruktor bez parametrów. Dzięki temu można bezpiecznie użyć następującego wyrażenia w rodzaju
new T()
Bez new
przymusu nie byłoby to dozwolone, ponieważ CLR nie mógł zweryfikować typ T
miał zastosowanie konstruktora.
Oznacza to, że T musi mieć publiczny konstruktor bez parametrów. Na przykład (z MSDN) dodaje się utworzenie nowego obiektu T musi być możliwe:
class ItemFactory<T> where T : new()
{
public T GetNewItem()
{
return new T();
}
}
Aby uzyskać więcej informacji, proszę zobaczyć new constraint w MSDN.
To pozwala wpisać:
T obj = new T();
która generuje błąd kompilatora bez klauzuli new()
.
Fantastyczne. To pomaga mi bardziej, niż się spodziewałem – Dann