AMK*_*AMK 2 c# generics methods list
我想编写一个通用方法,作为输入有一个通用对象列表.我想在每个列表项上调用一个方法.
我要做的是写一些像:
public void ResetPointProperties<T> (List<T> Points)
{
foreach (T point in Points)
{
point.Reset();
}
}
Run Code Online (Sandbox Code Playgroud)
我如何调用Reset()我的列表项?
你快到了.但是,缺少的是,就目前而言,编译器不知道每个T都是否有reset()方法.因此,您必须为需要实现接口的参数添加约束,或者从声明此类方法的类继承约束.TTreset()
例如,假设你在某个地方有以下界面:
public interface IThing
{
void reset();
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以按如下方式声明上述方法:
public void ResetPointProperties<T> (List<T> Points)
where T : IThing
Run Code Online (Sandbox Code Playgroud)
这强制传递给Ttype参数的任何类型都必须实现IThing.作为回报,编译器可以保证point在您的方法中实际上有一个reset()可以调用的方法.