我想做这样的事情
void DoSomething<T>(T param)
{
if param is IEnumerable<?>
{
loop param and do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道在问号的位置做什么.它有可能吗?
你在寻找的是:
if (T is IEnumerable) { .. }
Run Code Online (Sandbox Code Playgroud)
但是如果你希望T可以一直是IEnumerable:
void DoSomething<T>(T param) where T : IEnumerable
{
foreach (var t in param) { ... }
}
Run Code Online (Sandbox Code Playgroud)
或检查IEnumerable中值的类型:
public void DoSomething<T,U>(T val) where T : IEnumerable<U>
{
foreach (U a in val)
{
}
}
Run Code Online (Sandbox Code Playgroud)
不必担心自己检查,编译器会为你做,这是一个有静态类型系统和编译器的好东西:)
| 归档时间: |
|
| 查看次数: |
4470 次 |
| 最近记录: |