2

オブジェクトへの参照を取る関数があるとします。型の不一致を避けるためにパラメーターをキャストするにはどうすればよいですか?

Dictionary<string, string> mySettings = new Dictionary<string, string>();
.
.
saveSettings(ref mySettings);
.
.
void saveSettings(ref object)
{
}

saveSettings を呼び出すと、次のエラー メッセージが表示されます。

「参照ディクショナリ」から「参照オブジェクト」に変換できません

私は回避策を探していません。私はそれを行いました。この直接的なアプローチが可能かどうか知りたいです。

4

5 に答える 5

3

保存設定が複数のタイプを取る場合、代わりにジェネリックを使用しないのはなぜですか? 特に、共通のインターフェースを共有している場合。

void saveSettings<T>(T obj);
于 2011-03-17T21:30:17.033 に答える
2
var objectMySettings = mySettings as object;
if (objectMySettings != null)
    saveSettings(ref objectMySettings);
于 2011-03-17T21:22:03.620 に答える
1
void saveSettings(ref object)

saveSettings の定義の形式が正しくありません。「ref object」の後に識別子が必要です。しかし、代わりに「参照オブジェクト」を辞書にします。

于 2011-03-17T21:26:36.930 に答える
0

このようにしてください:

 protected void Button1_Click(object sender, EventArgs e)
{
    Dictionary<string, string> mySettings = new Dictionary<string, string>();

    saveSettings(mySettings);
}

void saveSettings( Dictionary<string, string> Settings)
{
}
于 2011-03-17T21:24:47.140 に答える
0

このようなもの:

static void Main()
{

   Dictionary<string, string> mySettings = new Dictionary<string, string>();
   object o = mySettings;
   SaveSettings(ref o);
   // o now has an item.
}

static void SaveSettings(ref object o)
{
    var d = o as Dictionary<string, string>;
    d.Add("Some", "String");
}

EDITいくつかのデバッグ出力。 ここに画像の説明を入力

于 2011-03-17T21:26:52.640 に答える