2

次の例では、this[] をクラス内で使用して、クラス インスタントのどこかから値を取得しています。この値はどこに保存されますか? [] 演算子がオーバーロードされている可能性がありますか、それともこれは私が慣れていない c# 構文ですか?

public class MyUserSettings : ApplicationSettingsBase
{
    [UserScopedSetting()]
    [DefaultSettingValue("white")]
    public Color BackgroundColor
    {
        get
        {
            return ((Color)this["BackgroundColor"]);
        }
        set
        {
            this["BackgroundColor"] = (Color)value;
        }
    }
}
4

3 に答える 3

5

それはインデクサーと呼ばれます。これは、クラスの演算子のオーバーロードに非常に似ています。そのクラスの別の場所、またはそのクラスの基本クラスの 1 つで、インデクサーが定義されています。

于 2012-11-09T14:40:27.770 に答える
4

これはインデクサーの構文です。

インデクサーを使用すると、配列のようにクラスまたは構造体のインスタンスにインデックスを付けることができます。インデクサーは、アクセサーがパラメーターを取ることを除いて、プロパティに似ています。

MyUserSettingsから継承するクラスの 1 つは、stringインデクサーを実装しています。

于 2012-11-09T14:40:28.023 に答える
1

はい、オーバーロードされたインデックス演算子です。

于 2012-11-09T14:41:51.060 に答える