Hi
I am quite confuse with Delegate
I see some examples like
public delegate string FirstDelegate (int x);
class DelegateTest
{
string name;
static void Main()
{
FirstDelegate d1 = new FirstDelegate(DelegateTest.StaticMethod);
DelegateTest instance = new DelegateTest();
instance.name = "My instance";
FirstDelegate d2 = new FirstDelegate(instance.InstanceMethod);
Console.WriteLine (d1(10)); // Writes out "Static method: 10"
Console.WriteLine (d2(5)); // Writes out "My instance: 5"
}
static string StaticMethod (int i)
{
return string.Format ("Static method: {0}", i);
}
string InstanceMethod (int i)
{
return string.Format ("{0}: {1}", name, i);
}
}
However i failed to see any advantage in using delegate. Why wouldn't someone write codes like. Wouldn't it be too troublesome to 'new' some other objects just to preform the same job?
static void Main()
{
//FirstDelegate d1 = new FirstDelegate(DelegateTest.StaticMethod);
//DelegateTest instance = new DelegateTest();
//instance.name = "My instance";
//FirstDelegate d2 = new FirstDelegate(instance.InstanceMethod);
Console.WriteLine (StaticMethod (10)); // Writes out "Static method: 10"
Console.WriteLine (InstanceMethod (5)); // Writes out "My instance: 5"
}
I am quite confuse with Delegate
I see some examples like
public delegate string FirstDelegate (int x);
class DelegateTest
{
string name;
static void Main()
{
FirstDelegate d1 = new FirstDelegate(DelegateTest.StaticMethod);
DelegateTest instance = new DelegateTest();
instance.name = "My instance";
FirstDelegate d2 = new FirstDelegate(instance.InstanceMethod);
Console.WriteLine (d1(10)); // Writes out "Static method: 10"
Console.WriteLine (d2(5)); // Writes out "My instance: 5"
}
static string StaticMethod (int i)
{
return string.Format ("Static method: {0}", i);
}
string InstanceMethod (int i)
{
return string.Format ("{0}: {1}", name, i);
}
}
However i failed to see any advantage in using delegate. Why wouldn't someone write codes like. Wouldn't it be too troublesome to 'new' some other objects just to preform the same job?
static void Main()
{
//FirstDelegate d1 = new FirstDelegate(DelegateTest.StaticMethod);
//DelegateTest instance = new DelegateTest();
//instance.name = "My instance";
//FirstDelegate d2 = new FirstDelegate(instance.InstanceMethod);
Console.WriteLine (StaticMethod (10)); // Writes out "Static method: 10"
Console.WriteLine (InstanceMethod (5)); // Writes out "My instance: 5"
}