1. ホーム
  2. c#

[解決済み] C#でプロパティをoutパラメータとして渡す

2023-07-23 20:09:46

質問

仮に私が

public class Bob
{
    public int Value { get; set; }
}

を渡したい。 のようなメンバーをoutパラメータとして渡したい。

Int32.TryParse("123", out bob.Value);

を追加しましたが、コンパイルエラーになります。 引数'out'は変数として分類されません。 これを達成する方法はありますか、または私は、à la、変数を抽出する必要がありそうです。

int value;
Int32.TryParse("123", out value);
bob.Value = value;

どのように解決するのですか?

自動実装されたプロパティではなく、明示的にフィールドと "normal" プロパティを使用する必要がありますね。

public class Bob
{
    private int value;
    public int Value
    { 
        get { return value; } 
        set { this.value = value; }
    }
}

次に フィールド をoutパラメータとして渡します。

Int32.TryParse("123", out bob.value);

しかしもちろん、フィールドはプライベートなので、これは同じクラス内でしか動作しません(そうであるべきです!)。

プロパティはこれをさせません。VB でさえも ができます。 でさえ、基本的に余分な一時変数が存在します。

の返り値を気にしないのであれば、このように TryParse の戻り値を気にしないのであれば、いつでもあなた自身のヘルパーメソッドを書くことができます。

static int ParseOrDefault(string text)
{
    int tmp;
    int.TryParse(text, out tmp);
    return tmp;
}

では、使ってください。

bob.Value = Int32Helper.ParseOrDefault("123");

こうすることで、複数個所で行う必要がある場合でも、1つの一時変数を使用することができます。