i try to generate some codes. i face to face delegates. Everythings is ok.(Look below) But appearing a warning: you shold assing value why? but second code below is ok.
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 }}
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;
}}
This is not neccessary and should not result in a warning.
Section 10.4.4 of the C# (3.0) spec says:
Section 5.2 of the C# (3.0) spec says:
So
public Hesap Calculator;is initialized automatically to its default value (null).