ホームページ > バックエンド開発 > C++ > C# で参照によるプロパティの受け渡しをシミュレートするにはどうすればよいですか?

C# で参照によるプロパティの受け渡しをシミュレートするにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-11 08:50:42
オリジナル
994 人が閲覧しました

How Can I Simulate Passing Properties by Reference in C#?

C# プロパティの参照渡しシミュレーション

参照によるプロパティの直接受け渡しは、C# ではサポートされていません。 ただし、いくつかの手法がこの動作を模倣しています。

1.戻り値メソッド:

最も簡単なアプローチには、メソッドからプロパティの値を返し、それを再割り当てすることが含まれます。

<code class="language-csharp">string GetString(string input)
{
    return input;
}

void Main()
{
    var person = new Person();
    person.Name = GetString("test");
}</code>
ログイン後にコピー

2.デリゲートベースのアプローチ:

デリゲートはプロパティのセッター メソッドを表すことができ、間接的な変更が可能です。

<code class="language-csharp">void SetString(string input)
{
    //  Assign 'input' to the relevant property here.
}

void Main()
{
    var person = new Person();
    GetString("test", SetString); // 'GetString' would need to invoke 'SetString'
}</code>
ログイン後にコピー

3. LINQ 表現テクニック:

LINQ 式は、プロパティ値にアクセスして操作するためのより洗練された方法を提供します。

<code class="language-csharp">void GetString<T>(string input, T target, Expression<Func<T, string>> outExpr)
{
    // Use the expression to assign 'input' to the property.  Requires expression tree manipulation.
}

void Main()
{
    var person = new Person();
    GetString("test", person, x => x.Name);
}</code>
ログイン後にコピー

4.リフレクションベースのソリューション:

リフレクションは、プロパティに動的にアクセスして変更するための最も柔軟な (ただし、速度が遅くなる可能性がある) メソッドを提供します。

<code class="language-csharp">void GetString(string input, object target, string propertyName)
{
    // Use reflection to set the property value.
}

void Main()
{
    var person = new Person();
    GetString("test", person, nameof(Person.Name));
}</code>
ログイン後にコピー

それぞれの方法にはトレードオフがあります。 戻り値を使用する方法が最も簡単ですが、リフレクションは最も柔軟性が高くなりますが、パフォーマンスのオーバーヘッドが発生します。 デリゲートと LINQ 式は、さまざまな複雑さの中間ソリューションを提供します。 最適な選択は、特定のニーズとパフォーマンスの考慮事項によって異なります。

以上がC# で参照によるプロパティの受け渡しをシミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート