У меня есть пользовательский-структуру:
C# Странное поведение
struct A
{
public int y;
}
пользовательский класс с пустым constuctor:
class B
{
public A a;
public B()
{
}
}
и здесь является основным:
static void Main(string[] args)
{
B b = new B();
b.a.y = 5;//No runtime errors!
Console.WriteLine(b.a.y);
}
Когда я запускаю вышеуказанную программу, это не дает мне ny ошибок, хотя я не инициализировал struct A в конструкторе класса B. .. 'a = new A();'
Я смущен вопросом. Почему вы ожидаете ошибку * runtime *? Я могу понять, почему вы ожидаете ошибки * компиляции-времени *, но почему вы ожидаете ошибку * runtime *? Я подозреваю, что ваша убежденность в том, что ошибка времени выполнения здесь уместна, является симптомом глубокого непонимания того, что означает «тип ценности». Можете ли вы объяснить, почему вы думаете, что это должно быть время выполнения, а не ошибка времени компиляции? Вы также ожидаете ошибку времени выполнения, если тип поля «a» был «double» вместо struct A? Почему или почему нет? –