зачем сначала назначать нулевое значение или другое значение по умолчанию? - PullRequest
2 голосов
/ 31 мая 2010

Я пытаюсь сгенерировать несколько кодов. я лицом к лицу делегатов. Все в порядке. (Смотри ниже) Но появляется предупреждение: вы должны сказать, почему? но второй код ниже в порядке.

namespace Delegates
{
    class Program
    {
        static void Main(string[] args)
        {</p>

<pre><code>        HesapMak hesapla = new HesapMak();
        hesapla.Calculator = new HesapMak.Hesap(hesapla.Sum);

        double sonuc = hesapla.Calculator(34, 2);
        Console.WriteLine("Toplama Sonucu:{0}",sonuc.ToString());
        Console.ReadKey();
    }
}

class HesapMak
{
   public double Sum(double s1, double s2)
    {
        return s1 + s2;
    }

   public double Cikarma(double s1, double s2)
    {
        return s1 - s2;
    }

   public double Multiply(double s1, double s2)
    {
        return s1 * s2;
    }
   public double Divide(double s1, double s2)
    {
        return s1 / s2;
    }
      public delegate double Hesap(double s1, double s2);
      public Hesap Calculator; ----&#60; they want me assingn value

}

}

namespace Delegates { class Program { static void Main(string[] args) { HesapMak hesapla = new HesapMak(); hesapla.Calculator = new HesapMak.Hesap(hesapla.Sum); double sonuc = hesapla.Calculator(34, 2); Console.WriteLine("Toplama Sonucu:{0}",sonuc.ToString()); Console.ReadKey(); } } class HesapMak { public double Sum(double s1, double s2) { return s1 + s2; } public double Cikarma(double s1, double s2) { return s1 - s2; } public double Multiply(double s1, double s2) { return s1 * s2; } public double Divide(double s1, double s2) { return s1 / s2; } public delegate double Hesap(double s1, double s2); public Hesap Calculator=null; } }

Ответы [ 2 ]

1 голос
/ 31 мая 2010

Ваш класс HesapMak является внутренним. Поэтому компилятор может сразу увидеть каждое использование поля Calculator.

Если нигде в вашем коде вы не назначите Calculator, компилятор выдаст вам предупреждение. Это потому, что поле тогда не нужно.

Предупреждение исчезнет, ​​как только вы начнете использовать поле в своем коде. Так что просто проигнорируйте это и напишите.

0 голосов
/ 31 мая 2010

Это не обязательно и не должно приводить к предупреждению.
Раздел 10.4.4 спецификации C # (3.0) гласит:

Начальное значение поля, будь то статическое поле или поле экземпляра, является значением по умолчанию (раздел 5.2) типа поля. Невозможно наблюдать значение поля до того, как произойдет инициализация по умолчанию, и поэтому поле никогда не будет «неинициализировано». Следующие категории переменных автоматически инициализируются значениями по умолчанию:

Раздел 5.2 спецификации C # (3.0) гласит:

Значение переменной по умолчанию зависит от типа переменной и определяется следующим образом:

  • Для переменной типа значения значение по умолчанию совпадает со значением, вычисленным конструктором по умолчанию типа значения (Раздел 4.1.1).
  • Для переменной ссылочного типа значением по умолчанию является ноль.

Таким образом, public Hesap Calculator; автоматически инициализируется значением по умолчанию (ноль).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...