İngilizce dilinde oku

Aracılığıyla paylaş


Action Temsilci

Tanım

Parametresi olmayan ve değer döndürmeyen bir yöntemi kapsüller.

C#
public delegate void Action();

Açıklamalar

Özel temsilciyi açıkça bildirmeden bir yöntemi parametre olarak geçirmek için bu temsilciyi kullanabilirsiniz. Kapsüllenen yöntem, bu temsilci tarafından tanımlanan yöntem imzasına karşılık olmalıdır. Bu, kapsüllenmiş yöntemin parametre ve dönüş değeri olmaması gerektiği anlamına gelir. (C# dilinde yöntemi döndürmelidirvoid. F# dilinde işlev veya yöntem döndürmelidirunit. Visual Basic'te ,...End Sub yapısı tarafından Subtanımlanmalıdır. Yoksayılan bir değer döndüren bir yöntem de olabilir.) Genellikle, böyle bir yöntem bir işlemi gerçekleştirmek için kullanılır.

Not

Parametresi olmayan ve değer döndüren bir yönteme başvurmak için bunun yerine genel Func<TResult> temsilciyi kullanın.

Temsilciyi Action kullandığınızda, parametresiz bir yordamı kapsülleyen bir temsilciyi açıkça tanımlamanız gerekmez. Örneğin, aşağıdaki kod adlı ShowValue bir temsilciyi açıkça bildirir ve örnek yöntemine Name.DisplayToWindow temsilci örneğine bir başvuru atar.

C#
using System;
using System.Windows.Forms;

public delegate void ShowValue();

public class Name
{
   private string instanceName;

   public Name(string name)
   {
      this.instanceName = name;
   }

   public void DisplayToConsole()
   {
      Console.WriteLine(this.instanceName);
   }

   public void DisplayToWindow()
   {
      MessageBox.Show(this.instanceName);
   }
}

public class testTestDelegate
{
   public static void Main()
   {
      Name testName = new Name("Koani");
      ShowValue showMethod = testName.DisplayToWindow;
      showMethod();
   }
}

Aşağıdaki örnek, yeni bir temsilciyi Action açıkça tanımlamak ve buna adlandırılmış bir yöntem atamak yerine temsilcinin örneğini oluşturarak bu kodu basitleştirir.

C#
using System;
using System.Windows.Forms;

public class Name
{
   private string instanceName;

   public Name(string name)
   {
      this.instanceName = name;
   }

   public void DisplayToConsole()
   {
      Console.WriteLine(this.instanceName);
   }

   public void DisplayToWindow()
   {
      MessageBox.Show(this.instanceName);
   }
}

public class testTestDelegate
{
   public static void Main()
   {
      Name testName = new Name("Koani");
      Action showMethod = testName.DisplayToWindow;
      showMethod();
   }
}

Aşağıdaki örnekte gösterildiği gibi temsilciyi Action C# dilinde anonim yöntemlerle de kullanabilirsiniz. (Anonim yöntemlere giriş için bkz . Anonim Yöntemler.)

C#
using System;
using System.Windows.Forms;

public class Name
{
   private string instanceName;

   public Name(string name)
   {
      this.instanceName = name;
   }

   public void DisplayToConsole()
   {
      Console.WriteLine(this.instanceName);
   }

   public void DisplayToWindow()
   {
      MessageBox.Show(this.instanceName);
   }
}

public class Anonymous
{
   public static void Main()
   {
      Name testName = new Name("Koani");
      Action showMethod = delegate() { testName.DisplayToWindow();} ;
      showMethod();
   }
}

Aşağıdaki örnekte gösterildiği gibi bir temsilci örneğine lambda Action ifadesi de atayabilirsiniz. (Lambda ifadelerine giriş için bkz. Lambda İfadeleri (C#) veya Lambda İfadeleri (F#).)

C#
using System;
using System.Windows.Forms;

public class Name
{
   private string instanceName;

   public Name(string name)
   {
      this.instanceName = name;
   }

   public void DisplayToConsole()
   {
      Console.WriteLine(this.instanceName);
   }

   public void DisplayToWindow()
   {
      MessageBox.Show(this.instanceName);
   }
}

public class LambdaExpression
{
   public static void Main()
   {
      Name testName = new Name("Koani");
      Action showMethod = () => testName.DisplayToWindow();
      showMethod();
   }
}

Uzantı Metotları

GetMethodInfo(Delegate)

Belirtilen temsilci tarafından temsil edilen yöntemi temsil eden bir nesnesi alır.

Şunlara uygulanır

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Ayrıca bkz.