我正在尝试获得" 1111111111"的输出。 Message函数由AddMessage调用,它将消息存储到数组中。 但是当我输出数组值时,我得到的是地址而不是值。我该如何解决这个问题?
class Program
{
public delegate int print();
public static void Main()
{
print[] array1 = new print[10];
AddMessage(ref array1, Message);
for (int i = 0; i < 10; i++)
{
Console.WriteLine(array1[i]);
}
}
public static void AddMessage(ref print[] array, print msg)
{
for(int i =0; i< 10; i++)
{
array[i] = msg;
}
}
public static int Message()
{
int msg;
msg = 1;
return msg;
}
}
}
答案 0 :(得分:2)
委托是一个函数,您将对函数本身的引用(而不是结果)传递给Console.WriteLine
。
Console.WriteLine(array1[i]);
必须变成
Console.WriteLine(array1[i]());
答案 1 :(得分:1)
您正在打印对象名称,因为您没有调用该委托:
for (int i = 0; i < 10; i++)
{
Console.WriteLine(array1[i]);
}
您应该将其更改为array1[i]()