我可以在參數聲明中將對象結構定義爲方法的參數,而無需創建類型嗎?在方法中定義一個匿名結構作爲參數
我對LINQ啓發SQL查詢,你可以在一個新的對象的形式返回的查詢結果的子集,其中:
var query = from t in dc.Table select new { Foo = t.column };
我可以在參數聲明中將對象結構定義爲方法的參數,而無需創建類型嗎?在方法中定義一個匿名結構作爲參數
我對LINQ啓發SQL查詢,你可以在一個新的對象的形式返回的查詢結果的子集,其中:
var query = from t in dc.Table select new { Foo = t.column };
什麼你所描述的是不可能的。在Linq to Sql查詢的情況下,C#編譯器創建一個名爲Foo的屬性與t.column具有相同類型的匿名類型。然後使用類型推理,並且變量「query」實際上被強類型化爲這個匿名類型(這就是爲這個變量提供intellisense的好處)。
使用「var」作爲參數類型是不可能的,因爲無法推斷參數的類型,它需要調用表達式來決定參數的實際類型。
,你可以做的是使用仿製藥,並通過性能循環最好的:
public static void Print<T>(T obj)
{
Type type = typeof(T);
PropertyInfo[] properties = type.GetProperties();
foreach(PropertyInfo pi in properties)
{
Console.WriteLine(pi.Name + ": " + pi.GetValue(obj, null));
}
}
,讓你使用匿名類型(或任何類型爲此事)爲參數的「簡陋」的能力。
不,你不能聲明匿名類型一個輸入參數,你不能返回它,除非你把它作爲一個對象返回。如果你願意的話,請參閱this blog post,這是一個非常方便的解決方法,但這實際上仍然只是來回裝箱和拆箱,因此實際上並不比把它當作一個對象更好。
參數對於不能直接使用的函數有用嗎?函數參數應該有助於文檔的功能。