Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 17968|Odpowiedź: 0

[Źródło] C#, gdzie analiza użytkowania

[Skopiuj link]
Opublikowano 12.07.2016 11:35:43 | | |

Klauzula gdzie służy do określenia ograniczeń typu, które mogą służyć jako zmienne dla parametrów typów zdefiniowanych w deklaracjach ogólnych.
1. Ograniczenia interfejsu.
Na przykład możesz zadeklarować klasę ogólną MyGenericClass, tak aby parametr typu T mógł zaimplementować interfejs IComparable<T>:

public class MyGenericClass<T>, gdzie T:IComparable { }

2. Ograniczenie klasy podstawowej: Oznacza, że typ musi użyć określonej klasy jako klasy bazowej (lub samej klasy), aby być użyta jako parametr typu dla tego typu.
Po zastosowaniu takiego ograniczenia musi pojawić się przed wszystkimi innymi ograniczeniami dotyczącymi typu parametru.
klasa MyClassy<T, U>
gdzie T : klasa
gdzie U : struct
{
}

Klauzula 3.gdzie może również zawierać ograniczenia konstruktora.
Możesz użyć nowego operatora do stworzenia instancji parametru typu; Ale argument typu musi być ograniczony przez konstruktor new() dla tego powodu. Ograniczenie new() informuje kompilator, że każdy podany argument musi mieć dostępny konstruktor bez parametrów (lub domyślny). Na przykład:
public class <T> MyGenericClass, gdzie T: IComparable, new()
{
Następująca linia nie jest możliwa bez ograniczenia new():
Element T = nowy T();
}
Ograniczenie new() pojawia się na końcu klauzuli where.

4. Dla wielu parametrów typu każdy parametr typu używa klauzuli where,
Na przykład:
interfejs MyI { }
Słownik klasowy<TKey, TVal>
gdzie TKey: Porównywalny, IEnumerowalny
gdzie TVal: MyI
{
public void Add(TKey key, TVal val)
{
}
}

5. Możesz także przypisać ograniczenia do parametrów typowych metod ogólnych, takich jak:

public bool MyMethod<T>(T t) gdzie T : IMyInterface { }

Należy zauważyć, że składnia opisu ograniczeń parametrów typu jest taka sama zarówno dla delegatów, jak i metod:

delegate T MyDelegate<T>(), gdzie T : new()





Ogólne gdzie

Ogólne Gdzie może kwalifikować parametry typu. Jest kilka sposobów.

·gdzie T : struct ogranicza parametr typu T musi odziedziczyć z System.ValueType.

·gdzie T: klasa ogranicza typ Parametr T musi być typem odniesienia, tzn. nie może być dziedziczony z System.ValueType.

gdzie T : new() ogranicza parametr typu T musi mieć domyślny konstruktor

·gdzie T : NameOfClass ogranicza parametr typu, który T musi odziedziczyć z klasy lub implementować interfejs.

Te kwalifikatory można łączyć, takie jak: public class Point where T : class, IComparable, new()




Poprzedni:c# Klasa pomocy NHibernate
Następny:c# http słucha wątków z HttpListener
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com