Delegasi C# (Output tidak menunjukkan nilai yang benar)

Saya mencoba mendapatkan output "1111111111". Fungsi Pesan dipanggil oleh AddMessage dan menyimpan pesan ke dalam array. Namun ketika saya menampilkan nilai array, saya mendapatkan alamatnya, bukan nilainya. Bagaimana cara memperbaikinya?

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;
    }


} 

}


person JeremyM    schedule 01.11.2017    source sumber
comment
Dalam kode Anda, ref di ref print[] array tidak diperlukan - cukup print[] array saja. Mengapa Anda memasukkan ref?   -  person Enigmativity    schedule 01.11.2017


Jawaban (2)


Delegasi adalah sebuah fungsi, Anda meneruskan referensi ke fungsi itu sendiri (bukan hasilnya) ke Console.WriteLine.

Console.WriteLine(array1[i]);

harus berubah menjadi

Console.WriteLine(array1[i]());
person caesay    schedule 01.11.2017

Anda mencetak nama objek karena Anda tidak memanggil delegasi:

for (int i = 0; i < 10; i++)
{
    Console.WriteLine(array1[i]);
}

Anda harus mengubahnya menjadi array1[i]()

person Llama    schedule 01.11.2017
comment
Terima kasih. Saya mengerti sekarang. - person JeremyM; 01.11.2017