Простой факт, что вам разрешено создавать новый объект, который должен быть константой, является явным свидетельством плохой практики (обычно). Я говорю «обычно», потому что .NET иногда использует эту концепцию, хотя неясно, почему.
Конечно, вы всегда можете сделать что-то вроде этого:
public class Foo
{
public struct Bar
{
public static double A = 100;
public Bar(double a)
{
A = a;
}
}
}
Что технически оправдывает создание Bar
; однако нет никакой гарантии, что константа Bar
будет когда-либо одинаковой (даже в однопоточной среде) и в конечном итоге будет малопригодной.