Это означает, что T
должен реализовывать интерфейс Core.ITwitterObject
.
Если вы передаете универсальному типу T
, не реализующему этот интерфейс, происходит ошибка времени компиляции.
Это условие позволяет компилятору вызывать функции, объявленные в Core.ITwitterObject
в случаях T
.
Обратитесь к документации для получения дополнительной информации.
Пример:
interface IFoo { void Perform(); }
class FooList<T> where T : IFoo
{
List<T> foos;
...
void PerformForAll()
{
foreach (T foo in foos)
foo.Perform(); // this line compiles because the compiler knows
// that T implements IFoo
}
}
Это имеет преимущество перед обычным
interface IFoo { void Perform(); }
class FooList
{
List<IFoo> foos;
...
void PerformForAll()
{
foreach (IFoo foo in foos)
foo.Perform();
}
// added example method
IFoo First { get { return foos[0]; } }
}
, поскольку такие методы, как First
, были бы более безопасны для типов, вам не нужно понижать значение с IFoo
до SomeRandomFooImpl
.