Когда у вас есть общий метод, вы можете выполнить перегрузку, как это предлагается в Почему T? не является типом, допускающим значение NULL? Как вы можете заставить это работать?
public class Foo<T>
{
public T? Bar()
{
return null;
}
}
Это кажется таким простым, поэтому я действительно не понимаю, почему нет простого способа сделать это.
2 ответа
Вы почти закончили. Вам просто нужно точно указать, какой тип вы хотите ограничить. Например.:
public class Foo<T> where T : struct
{
public T? Bar()
{
return null;
}
}
Компилируется нормально.
Как указано в связанном вопросе, вы можете использовать default(T):
return default(T) – мой источник: https://www.c -sharpcorner.com/article/defaultt-in-generics/
{
public T? Bar()
{
return default(T);
}
}
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.