如何在C#中对变量定义中的接口求和?
假设我们有两个接口:如何在C#中对变量定义中的接口求和?,c#,.net,inheritance,types,interface,C#,.net,Inheritance,Types,Interface,假设我们有两个接口:IOne和ITwo,我想定义一个函数,它接受同时实现这两个接口的任何类型的参数。怎么做?您可以这样做: interface IOne {void Hello();} interface ITwo {void World();} static void Foo<T>(T arg) where T : IOne, ITwo { arg.Hello(); arg.World(); } 接口IOne{void Hello();} 接口ITwo{void
IOne
和ITwo
,我想定义一个函数,它接受同时实现这两个接口的任何类型的参数。怎么做?您可以这样做:
interface IOne {void Hello();}
interface ITwo {void World();}
static void Foo<T>(T arg) where T : IOne, ITwo {
arg.Hello();
arg.World();
}
接口IOne{void Hello();}
接口ITwo{void World();}
静态无效Foo(T arg),其中T:IOne,ITwo{
arg.Hello();
arg.World();
}
您可以这样做:
interface IOne {void Hello();}
interface ITwo {void World();}
static void Foo<T>(T arg) where T : IOne, ITwo {
arg.Hello();
arg.World();
}
接口IOne{void Hello();}
接口ITwo{void World();}
静态无效Foo(T arg),其中T:IOne,ITwo{
arg.Hello();
arg.World();
}
您可以添加一个接口,该接口由ITwo
和IOne
继承
public void SomeFunction(INumber argument)
{
}
public interface INumber
{
}
public interface ITwo : INumber
{
}
public interface IOne : INumber
{
}
或使用泛型:
public void SomeFunction<T>(T argument) where T : IOne, ITwo
{
}
public void SomeFunction(T参数),其中T:IOne,ITwo
{
}
您可以添加一个接口,该接口由ITwo
和IOne
继承
public void SomeFunction(INumber argument)
{
}
public interface INumber
{
}
public interface ITwo : INumber
{
}
public interface IOne : INumber
{
}
或使用泛型:
public void SomeFunction<T>(T argument) where T : IOne, ITwo
{
}
public void SomeFunction(T参数),其中T:IOne,ITwo
{
}
您的第一个解决方案不能保证参数
同时实现两个接口。事实上,它可能无法实现其中任何一个!第二个解决方案很好,但是:-)第一个解决方案不能保证参数
同时实现两个接口。事实上,它可能无法实现其中任何一个!不过,您的第二个解决方案很好:-)