gpt4 book ai didi

c# - 如何从子类访问派生类中实现的接口(interface)方法?

转载 作者:行者123 更新时间:2023-11-30 13:26:17 25 4
gpt4 key购买 nike

我有两个接口(interface) A,B 都有相同的方法声明。我有一个继承自接口(interface) A、B 的类 C。我有另一个继承自 C 的类 D。现在我想从 D 访问 C 中实现的方法

interface A
{
int add(int x, int y);
int mul(int x, int y);
}

interface B
{
int add(int x, int y);
int mul(int x, int y);
}

public class C : A,B
{
int A.add(int x,int y)
{
return x + y;
}

int A.mul(int x,int y)
{
return 0;
}

int B.add(int x, int y)
{
return x;
}

int B.mul(int x, int y)
{
return y;
}
}


class D : C
{
}

如何从D访问C中的方法?

最佳答案

How to access the methods in C from D?

您必须使用具有相关接口(interface)编译时的引用。例如:

class D
{
public void FooA()
{
A a = this;
Console.WriteLine(a.mul(...));
}

public void FooB()
{
B b = this;
Console.WriteLine(b.mul(...));
}
}

当然你不需要局部变量——你可以强制转换:

Console.WriteLine(((A) this).mul(...));

...但它变得有点丑陋。

这只是因为您正在使用 explicit interface implementation .如果您隐式实现了其中一个接口(interface),您可以像往常一样直接调用这些方法...但是显式接口(interface)实现只允许通过该接口(interface)调用成员。

关于c# - 如何从子类访问派生类中实现的接口(interface)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27797035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com