C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のFuncデリゲートとActionデリゲートの違いは何ですか?


デリゲートは、特定のパラメーターリストとリターンタイプを持つメソッドへの参照を表すタイプです。デリゲートをインスタンス化すると、そのインスタンスを、互換性のあるシグニチャとリターンタイプを持つ任意のメソッドに関連付けることができます。デリゲートインスタンスを介してメソッドを呼び出す(または呼び出す)ことができます。

ファンクデリゲート

Funcは、System名前空間に含まれるジェネリックデリゲートです。 0個以上の入力パラメーターと1つの出力パラメーターがあります。最後のパラメーターはoutパラメーターと見なされます。このデリゲートは、最大16個のパラメーターを取り、値を返すメソッドを指すことができます。

以下は、2つの入力パラメーターと出力パラメーターを持つFuncデリゲートです。

機能<文字列、文字列、文字列>追加;

using System;
namespace DemoApplication {
   class Program {
      static void Main(string[] args) {
         Func<string, string, string> func = Append;
         string fullName = func("Michael", "Jackson");
         Console.WriteLine(fullName);
         Console.ReadLine();
      }
      static string Append(string firstName, string lastName) {
         return firstName + lastName;
      }
   }
}

出力

MichaelJackson

アクションデリゲート

アクションは、システム名前空間で定義されたデリゲートタイプです。アクションタイプのデリゲートは、アクションデリゲートが値を返さないことを除いて、Funcデリゲートと同じです。つまり、アクションデリゲートは、voidリターン型のメソッドで使用できます。最小1から最大16の入力パラメーターを含めることができ、出力パラメーターは含まれません。

以下は、2つの入力パラメーターと出力パラメーターを持つFuncデリゲートです。

機能<文字列、文字列、>印刷;

using System;
namespace DemoApplication {
   class Program {
      static void Main(string[] args) {
         Action func = AppendPrint;
         func("Michael", "Jackson");
         Console.ReadLine();
      }
      static void AppendPrint(string firstName, string lastName) {
         string fullName = firstName + lastName;
         Console.WriteLine($"{fullName}");
      }
   }
}

出力

上記のコードの出力は

です。
MichaelJackson

  1. 文字列とC#の文字列の違いは何ですか?

    StringはSystem.Stringを表しますが、stringはSystem.StringのC#のエイリアスです- 例 string str = "Welcome!"; 必須ではありませんが、通常、クラスを操作するときに文字列が使用されます。 string str = String.Format("Welcome! {0}!", user); 文字列はSystemのエイリアスであるため。弦。他のデータ型のエイリアスは-です 例 object: System.Object string: System.String bool: System.Bo

  2. Pythonの文字列とバイト文字列の違いは何ですか?

    文字列は文字のシーケンスです。これらは抽象的な概念であり、ディスクに直接保存することはできません。バイト文字列はバイトのシーケンスであり、ディスクに保存できるものです。それらの間のマッピングはエンコーディングです-これらはかなりたくさんあります(そして無限に多くが可能です)-そして、異なるエンコーディングが同じバイトをマッピングする可能性があるため、変換を行うために特定の場合にどちらが適用されるかを知る必要があります別の文字列に。たとえば、同じバイト文字列は、2つの異なるエンコーディングで2つの異なる文字列を表すことができます。 例 >>> b'\xcf\x84o\x