Я наткнулся на код, в котором переменные инициализируются на минус один. Это в каком-то старом коде, есть ли за этим какая-то причина? Потому что, насколько мне известно, все типы значений инициализируются нулем.
Я протестировал код, и он ничего не меняет, чтобы оставить переменную int неинициализированной или с минусом, результат тот же. Не могли бы вы просветить меня?
class Program
{
static void Main()
{
SampleDelegate del = new SampleDelegate(SampleMethodOne);
del += SampleMethodTwo;
int Number = -1; //or -> int Number;
int returnedValue = del(out Number);
Console.WriteLine("returnedValue = {0}", returnedValue);
Console.ReadLine();
}
public static int SampleMethodOne(out int Number)
{
return Number = 1;
}
public static int SampleMethodTwo(out int Number)
{
return Number = 3;
}
}
public delegate int SampleDelegate(out int Number);
/returns 2
Человек, написавший код, вероятно, единственный человек, который может точно сказать вам, каковы были их рассуждения. Мы можем только догадываться.
Что ж, вы сами уже упомянули разницу, и это, вероятно, было причиной использования -1: оно отличается от значения по умолчанию, поэтому вы знаете, когда значение изменилось на 0. Я также предполагаю, что отрицательные значения невозможны, но 0 действителен .
Довольно бессмысленно инициализировать переменную параметра out значением любой, потому что контракт для параметра out гарантирует, что метод установит значение - инициализированное значение отбрасывается. Также кажется странным, что метод возвращает параметр out; это как дважды передать значение вызывающей стороне. Я предполагаю, что тот, кто написал этот код, на самом деле не знал, что они делают, и что это не лучший пример для обучения программированию.
Код, который вы разместили, предназначен только для примера вашей проблемы или это фактический код?





TL; DR: как бывает, может и нет ответа
Вариант ответа:
Инициализация переменной лучше. вы никогда не знаете, как его можно использовать в некоторых более поздних функциях, где неожиданное значение может быть опасным (когда код оптимизирован, вы не можете быть уверены в значении по умолчанию, если оно не инициализировано).
В некоторых случаях int может использоваться в API по какой-либо причине совместимости, когда вам просто нужен uint. В таком случае инициализация отрицательным значением может быть простым способом обнаружения неустановленного / недопустимого значения.
Никакой реальной причины, просто привычка от разработчика. Согласен с комментариями, по возможности спроси у него
Похоже, это так, как вы говорите, потому что я много искал, и единственная логическая причина, которую я нашел, - это то, что для определения того, изменилось ли значение переменной, в любом случае спасибо за ответ.
Я что-то упускаю? Где -1? В любом случае, вам, вероятно, придется просто спросить человека, создавшего код, почему он принял это решение, велики шансы, что есть причина, и мы никогда ее не узнаем. Лучше всего предположить, что 0 имеет значение.