Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 17968|Отговор: 0

[Източник] C#, където анализ на употребата

[Копирай линк]
Публикувано в 12.07.2016 г. 11:35:43 ч. | | |

Клаузата where се използва за задаване на типови ограничения, които могат да служат като променливи за типови параметри, дефинирани в общи декларации.
1. Ограничения на интерфейса.
Например, можете да декларирате генеричен клас MyGenericClass, така че типовият параметър T да реализира<T> IComparable интерфейса:

публичен клас<T> MyGenerricClass, където T:IComparable { }

2. Ограничение за базов клас: Показва, че типът трябва да използва посочения клас като базов клас (или самия клас), който да се използва като параметър на типа за този общ тип.
След като такова ограничение бъде използвано, то трябва да се появи преди всички останали ограничения върху типа параметър.
клас MyClassy<T, U>
където T : клас
където U : struct
{
}

Клаузата 3.where може също да включва конструкторски ограничения.
Можете да използвате новия оператор, за да създадете инстанция на тип параметър; Но аргументът тип трябва да бъде ограничен от конструкторското ограничение new() за това. Ограничението new() информира компилатора, че всеки вид предоставен аргумент трябва да има достъпен конструктор без параметър (или по подразбиране). Например:
публичен клас <T> MyGenerricClass, където T: IComparable, new()
{
Следният ред не е възможен без ограничение new():
T елемент = нов T();
}
Ограничението new() се появява в края на клаузата "where".

4. За множество типови параметри всеки тип параметър използва клауза where
Например:
interface MyI { }
класов речник<TKey, TVal>
където TKey: IComparable, IEnumerable
където TVal: MyI
{
Public void Add(TKey ключ, TVal val)
{
}
}

5. Можете също да приложите ограничения към типови параметри на общи методи, като:

публичен bool <T>MyMethod(T t), където T : IMyInterface { }

Обърнете внимание, че синтаксисът за описание на ограниченията на типовите параметри е еднакъв както за делегатите, така и за методите:

делегат T <T>MyDelegate(), където T : new()





Генеричен Където

Generic Where може да квалифицира типови параметри. Има няколко начина.

·където T : struct ограничава типовия параметър, който T трябва да наследи от System.ValueType.

·където T: клас ограничава типа Параметърът T трябва да бъде референтен тип, тоест не може да бъде наследен от System.ValueType.

където T : new() ограничава типа параметър T трябва да има стандартен конструктор

·където T : NameOfClass ограничава типовия параметър, който T трябва да наследи от клас или да реализира интерфейс.

Тези квалификатори могат да се комбинират, като: публичен клас Точка, където T : клас, IComparable, new()




Предишен:c# NHibernate помощен клас
Следващ:c# http слуша нишки с HttpListener
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com