[解決済み】.NETの「クロージャ」とは何ですか?
2022-04-18 05:21:03
質問
とは何ですか? クロージャ ? .NETにはあるのでしょうか?
.NETに存在するのであれば、それを説明するコードスニペット(できればC#で)を提供していただけませんか?
どのように解決するのですか?
私は このトピックに関する記事 . (たくさんの例があります)。
本質的に、クロージャは後で実行することができるコードのブロックですが、最初に作成された環境を維持します - つまり、メソッドの実行が終了した後でも、それを作成したメソッドのローカル変数などを使用することができます。
クロージャの一般的な機能は、C#では匿名メソッドとラムダ式で実装されています。
ここでは、無名メソッドを使った例を紹介します。
using System;
class Test
{
static void Main()
{
Action action = CreateAction();
action();
action();
}
static Action CreateAction()
{
int counter = 0;
return delegate
{
// Yes, it could be done in one statement;
// but it is clearer like this.
counter++;
Console.WriteLine("counter={0}", counter);
};
}
}
出力します。
counter=1
counter=2
ここで、CreateActionによって返されたアクションは、CreateAction自体が終了しているにもかかわらず、まだカウンター変数にアクセスでき、実際にそれを増分できることがわかります。
関連
-
[解決済み] AssemblyInfo.csは何に使うのですか?
-
[解決済み] WinSCP 応答待ちタイムアウト
-
[解決済み] .NET WebRequestを使用してsharepointにファイルをアップロードすると、409/Conflict HTTPエラーが発生する理由?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] .NETでのdecimal, float, doubleの違い?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] .NET Coreと.NET Standard Class Libraryのプロジェクトタイプの違いは何ですか?
-
[解決済み】いくつかの良い.NETプロファイラーとは何ですか?
-
[解決済み】JavaScriptのクロージャと無名関数の比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】プラットフォームが同じでも「不正なフォーマットでプログラムを読み込もうとしました。
-
[解決済み】この動詞型ではcontent-bodyを送信できない
-
[解決済み] ファイル *.mdf をデータベースとして添付できません。
-
[解決済み] Microsoft.Practices.ServiceLocationはどこから来たのですか?
-
[解決済み] SQL Server Compact EditionデータベースのLINQ to SQLで、"Row not found or changed "例外を解決するにはどうすればよいですか?
-
[解決済み] NetFx45WebLinkとNetFx45RedistLinkの違いは何ですか?
-
[解決済み] Nuget接続の試行に失敗しました。"Unable to load service index for source"。
-
[解決済み] System.Timers.Timer vs System.Threading.Timer
-
[解決済み] プライベートメソッドのユニットテストはどのように行うのですか?
-
[解決済み] WCF - メッセージサイズのクォータを増加させる方法