powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / по моему мембер не должен быть null а он все равно null
3 сообщений из 3, страница 1 из 1
по моему мембер не должен быть null а он все равно null
    #39722387
yet another noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Форумчане привет! просьба не кидать помидорами я только начал изучать C# на Visual Studio 2017 и налабал такой вот пример.

У меня на форме три кнопки я их нажимаю последовательно и сообщения выводятся не в консоль а в многострочный TextBox.

Код: c#
1.
2.
3.
4.
5.
6.
static class Program
{

        public static MyTest1 MyObject = new MyTest1();
...
}



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    public class MyTest1
    {
        public MyTest2 Test2 { get; set; } = null;
        public string s = "Foo"; 
    }

    public class MyTest2
    {
        public int MyInt = 123;
        public string MyString = "My String 123";       
    }

    public class MyTest3
    {
        public MyTest2 Test2 = Program.MyObject.Test2;     
    }



и наконец код формы

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
    public partial class Form1 : Form
    {

        public MyTest3 test3 = null;

        public Form1()
        {
            InitializeComponent();
        }

        public void Print(string s)
        {
            textBox1.AppendText(s + "\n");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            test3 = new MyTest3();
            Print("test3 initialized");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Program.MyObject.Test2 = new MyTest2();
            Print("Program.MyObject.Test2 initialized");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (test3.Test2 == null) Print( "... but why ?" );
        }
    }


Я нажимаю кнопки сначала button1, затем button2 и button3.
Я ожидал что test3.Test2 (в обработчике button3_Click) никак не будет равен null
ведь этот мембер ссылается на Program.MyObject.Test2
а уже этот мембер был проинициализирован заведомо не null-овым значением на этапе button2_Click, тем не менее test3.Test2 таки равен null.

Объясните явление, пожалуйста.
...
Рейтинг: 0 / 0
по моему мембер не должен быть null а он все равно null
    #39722391
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yet another noobведь этот мембер ссылается на Program.MyObject.Test2Нет, он не ссылается. Он получает значение null тут
Код: c#
1.
 public MyTest2 Test2 = Program.MyObject.Test2; 

при инициализации класса в button1_Click и позже не меняется.
...
Рейтинг: 0 / 0
по моему мембер не должен быть null а он все равно null
    #39722420
yet another noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
да, вы правы.

я заменил реализацию MyTest3 на
Код: c#
1.
2.
3.
4.
public class MyTest3
    {
        public MyTest2 Test2 { get => Program.MyObject.Test2; }    
    }



вот теперь ссылается.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / по моему мембер не должен быть null а он все равно null
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]