Информация об изменениях

Сообщение Re[15]: C# [Proposal] init block for safe initialization of от 26.12.2025 7:22

Изменено 26.12.2025 7:31 Serginio1

Re[15]: C# [Proposal] init block for safe initialization of
Здравствуйте, Sinclair, Вы писали:

S>>>Попробуйте решить проблему при помощи EmptyNode.



S>>
S>>var node1 = new Node("Hello") { Next = Node.EmptyNode, Previous = Node.EmptyNode }; 
S>>var node2 = new Node("World") { Next = node1, Previous = Node.EmptyNode) }; 
S>>node1.Previous = node2;
S>>foreach(var n in Iterate(node1)
S>>Console.WriteLine(n);
S>>


S>>И никаких System.NullReferenceException

S>Во-первых, вы сначала напишите код Node.EmptyNode
S>У нас проблема не в NullReferenceException, а в нарушении инварианта. В частности, node1.Next и node2.Previous так и остались непроинициализированными. Вы код-то попробуйте запустить

Я же уже писал

private Node(bool blin)
{
 this.Next= this;
 this.Previous = this;
}


Ну и в Next и Previous запрет на изменения для EmptyNode.
Re[15]: C# [Proposal] init block for safe initialization of
Здравствуйте, Sinclair, Вы писали:

S>>>Попробуйте решить проблему при помощи EmptyNode.



S>>
S>>var node1 = new Node("Hello") { Next = Node.EmptyNode, Previous = Node.EmptyNode }; 
S>>var node2 = new Node("World") { Next = node1, Previous = Node.EmptyNode) }; 
S>>node1.Previous = node2;
S>>foreach(var n in Iterate(node1)
S>>Console.WriteLine(n);
S>>


S>>И никаких System.NullReferenceException

S>Во-первых, вы сначала напишите код Node.EmptyNode
S>У нас проблема не в NullReferenceException, а в нарушении инварианта. В частности, node1.Next и node2.Previous так и остались непроинициализированными. Вы код-то попробуйте запустить

Я же уже писал

private Node(bool blin)
{
 this._next= this;
 this._previous = this;
}


Ну и в Next и Previous запрет на изменения для EmptyNode.