C# 述語

王林
王林オリジナル
2024-09-03 15:27:251030ブラウズ

組み込みのジェネリック型デリゲートは、名前空間システムの下で定義される C# の述語デリゲートです。名前空間と特定の条件セットを含むメソッドは、述語デリゲートと連携して、渡されたパラメータが指定された条件を満たすかどうかを判断できます。この条件では 1 つの入力のみが取得され、true または false の値と述語デリゲートが返されます。他のデリゲートである Func デリゲートおよび Action デリゲートと同じです。

構文:

public delegate bool Predicate <in P>(P obj);

オブジェクト タイプは P で表され、obj はメソッド内で定義され、述語デリゲートで表される基準を比較するオブジェクトです。

C# での述語デリゲートの動作

  • true または false を返す関数は述語であり、述語への参照は述語デリゲートです。
  • 述語デリゲートの機能は、.NET 2.0 のリリースで導入されました。フレームワーク。
  • 述語関数を定義し、述語デリゲートを介して他の関数にパラメータとして渡すことができます。
  • Func の特殊なケースは、入力として 1 つのパラメーターのみを受け取り、true または false のいずれかのブール値を返す述語デリゲートです。
  • ラムダ式や匿名メソッドなど、あらゆるメソッドを述語デリゲート内に記述することができます。
  • ジェネリック型は、ラムダ式で使用される場合、述語デリゲートによって引数として取得されます。

C# 述語の例

言及されている例を以下に示します:

例 #1

プログラム内で述語デリゲートを使用して、パラメーターとして渡された指定された文字列が大文字であるかどうかを確認する C# プログラム。

コード:

using System;
//a namespace called program is defined
namespace program
{
//a class called check is defined
public class check
{
//a Boolean method is defined to check if the given string is written in capital letters or not. If written in capital letters, true is returned else False is returned.
static bool IsUC(string stri)
{
return stri.Equals(stri.ToUpper());
}
//main method is called
static void Main(string[] args)
{
//a predicate delegate is defined with object type as string and IsUC is an object which compares the criteria that is defined within a method and is represented by predicate delegate.
Predicate<string> isU = IsUC;
//The result of the predicate delegate is stored in a variable called res
bool res = isU("welcome to c#");
//the result is displayed
Console.WriteLine(res);
}
}
}

出力:

C# 述語

説明:

  • 上記のプログラムでは、programという名前空間が定義されています。次に、check というクラスが定義されます。次に、指定された文字列が大文字で書かれているかどうかをチェックするブール メソッドが定義されます。指定された文字列が大文字で書かれている場合は true が返され、それ以外の場合は False が返されます。次に、main メソッドが呼び出されます。
  • 次に、述語デリゲートがオブジェクト型を文字列として定義され、IsUC はメソッド内で定義され述語デリゲートで表される基準を比較するオブジェクトです。次に、述語デリゲートの結果が res という変数に格納されます。すると結果が表示されます。

例 #2

プログラム内で述語デリゲートを使用して、指定された文字列の長さが指定された値より小さいかどうかを確認する C# プログラム。

コード:

using System;
//a class called program is defined
class program
{
// a predicate delegate is defined with object type as string
public delegate bool my_del(string stri);
// a method is defined inside a predicate delegate by passing the object as parameter to check if the length of the given string is less than a specified value. If less than the given specified value, true is returned else false is returned
public static bool fun(string stri)
{
if (stri.Length < 5)
{
return true;
}
else
{
return false;
}
}
//Main method is called
static public void Main()
{
// a predicate delegate is defined with object type as string and fun is an object which compares the criteria that is defined within a method and is represented by predicate delegate.
my_del obj = fun;
//The string to be passed as a parameter to predicate delegate is written here
Console.WriteLine(obj("Shobha"));
}
}

出力:

C# 述語

説明:

  • 上記のプログラムでは、programというクラスが定義されています。次に、オブジェクト型を文字列として述語デリゲートが定義されます。次に、オブジェクトをパラメーターとして渡して、指定された文字列の長さが指定された値より小さいかどうかを確認することにより、述語デリゲート内でメソッドが定義されます。文字列の長さが指定された値より短い場合は true が返され、それ以外の場合は false が返されます。
  • 次に、Main メソッドが呼び出されます。次に、述語デリゲートが文字列としてのオブジェクト型で定義され、fun はメソッド内で定義され述語デリゲートで表される基準を比較するオブジェクトです。そして最後に述語デリゲートにパラメータとして渡す文字列を記述します。

メリット

C# 述語の利点を以下に示します。

  • 述語デリゲートは、値のリストをフィルターで除外する必要がある場合に役立ちます。
  • 述語デリゲートは、1 回限りの検索関数用にインラインで作成できます。
  • 述語デリゲートは、汎用コレクション内の項目を検索する必要がある場合に使用できます。
  • 述語デリゲートを使用すると、コードの長さが短縮され、true または false が返されます。
  • 匿名メソッド、ラムダ式を述語デリゲートに割り当てることができます。
  • 述語デリゲートは実行時にロジックを提供します。これは単純なロジックでも複雑なロジックでも構いません。

以上がC# 述語の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。