powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как это сделать в С#
7 сообщений из 7, страница 1 из 1
Как это сделать в С#
    #39698153
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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.
      class Program
    {
        static void Main(string[] args)
        {
           Debug.Print( (bar._foo == null) + "\n");
           Debug.Print( (foo._bar == null).ToString());
            int i = 34;
        }

        static readonly Bar bar = new Bar(foo);
        static readonly Foo foo = new Foo(bar);
    }

    class Bar
    {
        public readonly Foo _foo;

        public Bar(Foo foo)
        {
            _foo = foo;
        }
    }

    class Foo
    {
        public readonly Bar _bar;

        public Foo(Bar bar)
        {
            _bar = bar;
        }
    }



Это допустимый в С# код, но не рабочий.

bar._foo всегда null. понятно, что это связано с очередностью инициализации.

на С подобное, с небольшими доп усилиями реализуемо.
на JAVA даже Не компилируется. обязательно нужна функция которая будет все правильно сшивать
на Rust работает, как и ожидается, правильно.

вопрос как бы это сделать на C#

без использования дополнительных функций "постсшивния"

приведенный пример рафинированный, максимально упрощенный, сконструированный исключительно только для понимания того что нужно сделать.
В реальности есть гигантская структура иерархических, статических [b]READ ONLY [/b] данных по которым нужно максимально быстро перемещаться и выдергивать данные.
...
Рейтинг: 0 / 0
Как это сделать в С#
    #39698154
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код, в котором есть взаимная зависимость классов друг от друга, очень плохо пахнет.

Cheblinисключительно только для понимания того что нужно сделатьпонимание не наступило
...
Рейтинг: 0 / 0
Как это сделать в С#
    #39698159
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblinвопрос как бы это сделать на C#

без использования дополнительных функций "постсшивния"
Никак.
...
Рейтинг: 0 / 0
Как это сделать в С#
    #39698160
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
очень плохо пахнет.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
class Parent
    {
        Child children[];
    }

class Child
    {
        Parent parent;
    }



чем пахнет?
...
Рейтинг: 0 / 0
Как это сделать в С#
    #39698161
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblinчем пахнет?ошибками синтаксиса

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    interface INode {}

    class Parent : INode
    {
        INode[] children;
    }

    class Child : INode
    {
        INode parent;
    }
...
Рейтинг: 0 / 0
Как это сделать в С#
    #39698165
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это совершенно условный код.
очевидно что во взаимной связи классов нет ничего плохого.
...
Рейтинг: 0 / 0
Как это сделать в С#
    #39698180
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblinочевидно что во взаимной связи классов нет ничего плохого.Очевидно, что земля плоская, потому что если бы она была шарообразная, с нее бы все падали.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как это сделать в С#
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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