Я наткнулся на поведение, которое сбивает меня с толку и блокирует меня от достижения прогресса. Множество способов, которыми я могу обойти это, но я хочу хотя бы понять, что происходит.
это кажется , что знак вопроса (обозначение нуля) игнорируется, когда помещается после параметра типа (например, в списке параметров метода шаблона), но только если аргумент типа - это тип значения, а не тип ссылки. Ожидается: < /p>
public class Foo
{
public void Bar(T? _) { } // Notice the question mark
}
public class Test { } // Test is a reference type
Test? NullableType = new();
Foo foo = new();
foo.Bar(NullableType); // Works fine
< /code>
Но следующее не работает. Единственное изменение заключается в том, что тип теста теперь является типом значения. < /P>
public class Foo
{
public void Bar(T? _) { } // Notice the question mark
}
public struct Test { } // Test is now a value type
Test? NullableType = new();
Foo foo = new();
foo.Bar(NullableType); // Error CS1503 - Argument 1: cannot convert from 'Test?' to 'Test'
< /code>
может кто -нибудь просветить меня? Есть ли простой способ исправить это, не меняясь слишком сильно?
Подробнее здесь: https://stackoverflow.com/questions/796 ... ored-in-ce