Я хочу написать универсальный метод расширения, который выдает ошибку, если нет значения.ТАК Я хочу что-то вроде:
public static T GetValueOrThrow(this T? candidate) where T : class
{
if (candidate.HasValue == false)
{
throw new ArgumentNullException(nameof(candidate));
}
return candidate.Value;
}
- C # не распознает T: Тип или имя пространства имен "T" не может быть найдено
- C # не распознает где: Ограниченияне допускается для неуниверсальных объявлений
Есть идеи, если это работает?Чего мне не хватает?
Я также придумываю:
public static T GetValueOrThrow<T>(this T? candidate) where T : class
{
if (candidate.HasValue == false)
{
throw new ArgumentNullException(nameof(candidate));
}
return candidate.Value;
}
Теперь C # жалуется на кандидата: тип T должен быть типом значения, не допускающим значения NULL, чтобы использовать его в качестве параметраT в универсальном типе или методе Nullable
Это не имеет отношения к сравнению.