Skip to main content
 首页 » 编程设计

c#之传递基本类型集合时,C#方法选择选择对象而不是IEnumerable object>

2024年01月18日32JeffreyZhao

我有一个带有两个添加方法的对象:

public void Add(string keyName, object value)

public void Add(string keyName, IEnumerable<object> values)

如果调用它并提供一个对象,它将调用第一个对象。如果提供IEnumerable,则调用第二个。但是,如果提供原始类型的IEnumerable,它将调用第一个。

有没有办法让c#选择第二种方法并将其装箱,而不是将数组视为对象?

如果不是,我想我将在第一个add方法中进行检查,以查看它是否为原始类型ienumerable并强制其调用第二个方法。

请您参考如下方法:

您可以为此使用泛型。如果将第二种方法更改为:

public void Add<T>(string keyName, IEnumerable<T> values) 
{ 
 
} 


然后,如果它是任何类型的 IEnumerable<T>(例如 IEnumerable<int>),它将使用通用方法。

值得注意的是, IEnumerable<T>与 IEnumerable<object>并不完全相同,因此如果您需要将其作为 IEnumerable<object>,则需要类似 IEnumerable<object> obList = values.Cast<object>();