我有一個:如何對C#中的對象類型進行強制轉換?
public class MyClass {
private string PrivateString;
}
,我有一個接受的界面:我有我需要通過對象o推,我的谷歌失敗我MyClass的名單
object o
。什麼是做這個工作的程序?我知道這一定很瘋狂,但我還沒有在C#中進行類型轉換。
我有一個:如何對C#中的對象類型進行強制轉換?
public class MyClass {
private string PrivateString;
}
,我有一個接受的界面:我有我需要通過對象o推,我的谷歌失敗我MyClass的名單
object o
。什麼是做這個工作的程序?我知道這一定很瘋狂,但我還沒有在C#中進行類型轉換。
MyClass my = new MyClass(); WhateverTheFunctionThatTakesObjectIs(my);
所有內容都會隱式轉換爲對象。
你沒有必要做任何類型的鑄件使用MyClass的對象用於拍攝對象參數的方法,但是你可能有鑄造MyClass的對象列表對象
的List<MyClass>
對象可以列表問題仍然只是傳遞給你的接口實現,因爲List可以被隱式拋棄到object
(所有對象都可以)。如果編譯器抱怨的,因爲你有你的代碼設置方式(我不得不說,因爲你還沒有真正顯示我們的任何代碼),那麼你可以明確地投它:
myInterfaceFunction((object) myList);
或:
myInterfaceFunction(myList as object);
如果你想投的內容的列表的和傳遞List<object>
當你已經有一個List<MyClass>
那麼你可以這樣做:
myInterfaceFunction(myList.Cast<object>().ToList());
(如果您的界面功能使用IEnumerable<object>
而不是List<object>
),您可以擺脫ToList())。
這是一個簡單的例子。這很好地說明了我對明確投射到object
的意見 - 默認情況下,對MyFunction(myList)
的呼叫將轉到MyFunction(IEnumerable<object> blah)
函數 - 您必須明確強制轉換爲MyFunction(object blah)
函數。
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
List<MyObject> myList = new List<MyObject>();
MyFunction(myList);
MyFunction((object)myList);
MyFunction(myList.Cast<object>().ToList());
MyFunction(myList.Cast<object>());
}
public static void MyFunction(List<object> blah)
{
Console.WriteLine(blah.GetType().ToString());
}
public static void MyFunction(IEnumerable<object> blah)
{
Console.WriteLine(blah.GetType().ToString());
}
public static void MyFunction(object blah)
{
Console.WriteLine(blah.GetType().ToString());
}
}
public class MyObject { }
}