Выбор имени значения (вместо использования магической константы на месте), использование const
и установка null
являются более или менее ортогональными проблемами, хотя я согласен, что диаграмма Венна может иметь очень маленькую величинуобласть перекрытия для трех:)
Я могу вспомнить случай, когда у вас больше или больше одноразовых данных, чем у кода, но вы хотите, чтобы значения не были случайно полученыизменено во время написания или поддержки вашего кода.Такая ситуация довольно часто встречается в модульных тестах:
[Test]
public void CtorNullUserName()
{
const string expectedUserName = null;
var user = new User(expectedUserName);
Assert.AreEqual(expectedUserName, user.Name, "Expected user name to be unchanged from ctor");
}
Вы, возможно, могли бы структурировать такой код множеством способов, которые не предполагали присвоение null
для const
, но это все еще допустимоoption.
Это также может быть полезно для решения проблем с перегрузкой методов:
public class Something
{
public void DoSomething(int? value) { Console.WriteLine("int?"); }
public void DoSomething(string value) { Console.WriteLine("string"); }
}
// ...
new Something().DoSomething(null); // This is ambiguous, and won't compile
const string value = null;
new Something().DoSomething(value); // Not ambiguous