如果我有一个引用对象的函数。如何转换参数以避免类型不匹配?
Dictionary<string, string> mySettings = new Dictionary<string, string>();
.
.
saveSettings(ref mySettings);
.
.
void saveSettings(ref object)
{
}
对saveSettings的调用会导致以下错误消息:
无法从'ref Dictionary'转换为'ref object'
我不是在寻找解决方法,我已经这样做了,我想知道这种直接方法是否可行。
答案 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");
}
编辑一些调试输出。