我有兩個列表<>與我需要編輯的相同字段。如何爲這些列表編寫一個通用函數?通用函數爲兩個List <>
public List<?> CutField(List<?> list)
{
foreach(var element in list)
{
element.Field = // ;
}
return List<?>;
}
我有兩個列表<>與我需要編輯的相同字段。如何爲這些列表編寫一個通用函數?通用函數爲兩個List <>
public List<?> CutField(List<?> list)
{
foreach(var element in list)
{
element.Field = // ;
}
return List<?>;
}
最好的辦法是使用泛型:
public List<T> CutField<T>(List<T> list) where T : MyInterface
{
foreach(T element in list)
{
element.Field = // ;
}
return list;
}
隨着
public interface MyInterface
{
object Field { get; set; } // or whatever datatype you need for the field
}
當然,所有可能的類型列表中應實現該接口。
另外,您還可以省略CutField
的返回類型,因爲您已經在修改作爲參數傳遞的列表。
嗨。我寫了,但T是紅色和VS寫給我:cfnnjt解析符號T,其中紅色:非泛型聲明不允許約束 – jack
Ooops,我已更新我的答案,現在它應該工作。 – HimBromBeere
是的,現在它的工作!但是現在我可以通過這個通用的兩個List嗎? – jack
這兩種類型是否實現相同的接口,指定屬性? (你真的不想公開這個字段...)另外,爲什麼要返回列表,因爲你只是修改列表元素引用的對象? –
讓這兩種類型實現相同的接口並將列表聲明爲'List'。 –
@TimSchmelter:或者在類型參數上有一個類型約束的泛型方法 - 這會更靈活。 –