Как создать постоянный элемент для неизменяемого типа?

StackOverflow https://stackoverflow.com/questions/912636

  •  06-09-2019
  •  | 
  •  

Вопрос

Если у вас есть неизменяемый тип, подобный этому:

struct Point3
{

}

и член внутри, подобный origin:

public static const Point3 Origin = new Point3 (0,0,0);

должны ли вы использовать:

new Point3 (0,0,0)

?

Мне кажется, что, поскольку тип не может быть изменен, зачем иметь много источников, которые по сути являются одним и тем же?Как будто мы никогда не меняем 0, верно?

Как добиться того же самого для неизменяемых типов?

Это было полезно?

Решение

public static readonly Point3 Origin = new Point3(0,0,0);

Другие советы

Как упоминал Эндрю, вы не можете использовать const для этого, потому что это не константа времени компиляции.

Обратите внимание, что если вы являются если вы собираетесь использовать конструктор повторно, вам было бы лучше (с точки зрения производительности) вызвать

new Point3()

чем

new Point3(0, 0, 0)

Компилятор знает, что первая версия просто очистит память, и ему не нужно вызывать какой-либо код.

Тем не менее, я бы согласился с предоставлением Origin участник и использующий это везде вместо этого, где это возможно :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top