как ограничить несколько аргументов обобщений в C# dotnet - PullRequest
1 голос
/ 25 февраля 2020

Как вы "ограничиваете" 2 или более (несколько) заполнителей?

public abstract class MyBaseClass<T> : ISomethingElse<T> where T : struct
{
}

Обратите внимание, что T ограничен структурой, и я делал это несколько раз за эти годы.

все вышеперечисленное прекрасно работает

Теперь я хочу создать обобщенное определение класса c и наложить ограничение на T AND K.

public abstract class MyBaseClass<T, K> : ISomethingElse<T, K> where T : struct , K : struct
{
}

выше ... я не могу понять синтаксис волхвов c.

Я знаю "легко".

Ответы [ 2 ]

2 голосов
/ 25 февраля 2020

Вы можете ограничить несколько обобщенных c аргументов, включив ограничение where для каждого аргумента, разделенного пробелом. Таким образом, в вашем фрагменте кода это будет выглядеть следующим образом:

public abstract class MyBaseClass<T, K> : ISomethingElse<T, K> where T : struct where K : struct
{
}

или более читаемая версия будет:

public abstract class MyBaseClass<T, K> : ISomethingElse<T, K> 
  where T : struct 
  where K : struct
{
}
2 голосов
/ 25 февраля 2020

Вам необходимо ключевое слово where дважды.

class Foo<T, K>
   where T : struct
   where K : struct
{
}

Это ограничения на параметры типа, и в документации содержится много полезной информации о них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...