[英]Does casting an Object in C# always return a Reference to the initial object
[英]Casting an object reference in c#
如果我有一個引用對象的函數。 如何轉換參數以避免類型不匹配?
Dictionary<string, string> mySettings = new Dictionary<string, string>();
.
.
saveSettings(ref mySettings);
.
.
void saveSettings(ref object)
{
}
對saveSettings的調用導致以下錯誤消息:
無法從“參考字典”轉換為“參考對象”
我不是在尋找解決方法,我已經這樣做了,我想知道這種直接方法是否可行。
如果保存設置采用多種類型,為什么不使用泛型呢? 如果它們共享一個公共接口,則為Esp。
void saveSettings<T>(T obj);
var objectMySettings = mySettings as object;
if (objectMySettings != null)
saveSettings(ref objectMySettings);
void saveSettings(ref object)
saveSettings的定義格式不正確。 您需要在“引用對象”之后的標識符。 但是我會把“ ref object”變成一個Dictionary。
這樣做:
protected void Button1_Click(object sender, EventArgs e)
{
Dictionary<string, string> mySettings = new Dictionary<string, string>();
saveSettings(mySettings);
}
void saveSettings( Dictionary<string, string> Settings)
{
}
像這樣:
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");
}
編輯一些調試輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.