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”之后需要一个标识符。但我会将“ref 对象”改为 Dictionary。

于 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");
}

编辑一些调试输出。 在此处输入图像描述

于 2011-03-17T21:26:52.640 回答