簡體   English   中英

在C#中強制轉換對象引用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM