Aracılığıyla paylaş


Temsilci adı vs. Adsýz yöntemler (C# Programlama Kılavuzu)

A temsilci adlı bir yöntemi ile ilişkili olabilir.Adlandırılmış bir yöntemi kullanarak bir temsilci örneğini, yöntemi parametre olarak örneğin iletilir:

// Declare a delegate:
delegate void Del(int x);

// Define a named method:
void DoWork(int k) { /* ... */ }

// Instantiate the delegate using the method as a parameter:
Del d = obj.DoWork;

Bu, adlandırılmış bir yöntem kullanılarak çağrılır.Adlandırılmış bir yöntemle oluşturulmuş temsilcileri ya da kapsüllemek bir statik yöntemini veya bir oluşum yöntemi.C# [NULL]'ın önceki sürümlerindeki bir temsilci örneğini oluşturmak için tek yolu adlı yöntemlerdir.Ancak, yeni bir yöntem oluşturma yükünü istenmeyen olduğu bir durumda, C#, temsilci örneğini oluşturmak ve bunu çağrıldığında temsilci işleyecek bir kod bloğunun hemen belirtmek sağlar.Blok lambda ifade veya Adsýz bir yöntem içerir.Daha fazla bilgi için bkz. Anonim işlevler (C# Programlama Kılavuzu).

Notlar

Bir temsilci parametre olarak iletin yöntemini, temsilci bildirimi ile aynı imza olmalıdır.

Bir temsilci oluşumu ya da statik şifreleyebilir veya yöntem örnek.

Temsilci kullanabilirsiniz, ancak bir dışarı parametresi değil öneririz kullanımı çok noktaya yayın olay temsilcilerle hangi temsilci olarak adlandırılan bilemezsiniz çünkü.

Örnek 1

Bildirmek ve bir temsilci kullanarak basit bir örnek aşağıdadır.Dikkat her iki temsilci Delve ilişkili yöntemi MultiplyNumbers, aynı imzaya sahip

// Declare a delegate
delegate void Del(int i, double j);

class MathClass
{
    static void Main()
    {
        MathClass m = new MathClass();

        // Delegate instantiation using "MultiplyNumbers"
        Del d = m.MultiplyNumbers;

        // Invoke the delegate object.
        System.Console.WriteLine("Invoking the delegate using 'MultiplyNumbers':");
        for (int i = 1; i <= 5; i++)
        {
            d(i, 2);
        }

        // Keep the console window open in debug mode.
        System.Console.WriteLine("Press any key to exit.");
        System.Console.ReadKey();
    }

    // Declare the associated method.
    void MultiplyNumbers(int m, double n)
    {
        System.Console.Write(m * n + " ");
    }
}
/* Output:
    Invoking the delegate using 'MultiplyNumbers':
    2 4 6 8 10
*/

Örnek 2

Aşağıdaki örnekte, her iki statik bir temsilci eşleştirilir ve yöntemleri ve döndürür belirli bilgileri her örneği.

// Declare a delegate
delegate void Del();

class SampleClass
{
    public void InstanceMethod()
    {
        System.Console.WriteLine("A message from the instance method.");
    }

    static public void StaticMethod()
    {
        System.Console.WriteLine("A message from the static method.");
    }
}

class TestSampleClass
{
    static void Main()
    {
        SampleClass sc = new SampleClass();

        // Map the delegate to the instance method:
        Del d = sc.InstanceMethod;
        d();

        // Map to the static method:
        d = SampleClass.StaticMethod;
        d();
    }
}
/* Output:
    A message from the instance method.
    A message from the static method.
*/

Ayrıca bkz.

Görevler

Nasıl yapılır: temsilcileri birleştirme (çok noktaya yayın temsilcileri) (C# Programlama Kılavuzu)

Başvuru

Temsilciler (C# Programlama Kılavuzu)

Adsýz yöntemler (C# Programlama Kılavuzu)

Olayları (C# Programlama Kılavuzu)

Kavramlar

C# Programlama Kılavuzu