在c#中转换对象引用

时间:2011-03-17 21:18:33

标签: c# object casting ref

如果我有一个引用对象的函数。如何转换参数以避免类型不匹配?

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

对saveSettings的调用会导致以下错误消息:

无法从'ref Dictionary'转换为'ref object'

我不是在寻找解决方法,我已经这样做了,我想知道这种直接方法是否可行。

5 个答案:

答案 0 :(得分:3)

如果保存设置采用多种类型,为什么不使用通用呢? Esp,如果他们共享一个共同的接口。

void saveSettings<T>(T obj);

答案 1 :(得分:2)

var objectMySettings = mySettings as object;
if (objectMySettings != null)
    saveSettings(ref objectMySettings);

答案 2 :(得分:1)

void saveSettings(ref object)

saveSettings的定义格式不正确。在“ref object”之后需要一个标识符。但我会将“ref object”改为字典。

答案 3 :(得分: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)
{
}

答案 4 :(得分: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");
}

编辑一些调试输出。 enter image description here