为什么首先分配空值或其他默认值?

时间:2010-05-31 15:10:10

标签: c# .net visual-studio oop

我尝试生成一些代码。我面对面代表。一切都很好。(看下面)但是出现了一个警告:你为什么值得贬值?但是下面的第二个代码是可以的。

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; ----< they want me assingn value

}

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; ----< they want me assingn value }

}

2 个答案:

答案 0 :(得分:1)

您的班级HesapMak是内部的。因此,编译器可以立即查看字段Calculator的每次使用。

如果你的代码中没有分配给Calculator,编译器会给你一个警告。这是因为这个领域是不必要的。

一旦开始在代码中的某个位置使用该字段,警告就会消失。所以现在就忽略它并写下来。

答案 1 :(得分:0)

这不是必要的,不应该发出警告 Section 10.4.4 of the C# (3.0) spec说:

  

字段的初始值,无论是静态字段还是实例字段,都是字段类型的默认值(第5.2节)。在发生此默认初始化之前,无法观察字段的值,因此字段永远不会“未初始化”。   以下类别的变量会自动初始化为其默认值:

Section 5.2 of the C# (3.0) spec说:

  

变量的默认值取决于变量的类型,并确定如下:

     
      
  • 对于value-type的变量,默认值与value-type的默认构造函数计算的值相同(第4.1.1节)。
  •   
  • 对于reference-type的变量,默认值为null。
  •   

因此public Hesap Calculator;会自动初始化为默认值(null)。