gpt4 book ai didi

c# - 将实现哪个接口(interface)?

转载 作者:行者123 更新时间:2023-11-30 18:49:05 25 4
gpt4 key购买 nike

我有一个关于界面的问题。有 2 个接口(interface)都包含相同的方法 Test()。现在我继承了 Sample 类中的两个接口(interface)。我想知道将调用哪个接口(interface)的方法?我的代码示例如下:

interface IA 
{
void Test();
}
interface IB
{
void Test();
}
class Sample: IA, IB
{
public void Test()
{
Console.WriteLine("Which interface will be implemented IA or IB???!");
}
}
class Program
{
public static void Main(string[] args)
{
Sample t = new Sample();
t.Test();//Which Interface's Method will called.
Console.ReadLine();
}
}

谢谢维延德拉·辛格

最佳答案

两者的结果是一样的。如果您希望每个接口(interface)有不同的行为,则必须显式实现它们:

interface IA 
{
void Test();
}
interface IB
{
void Test();
}
class Sample: IA, IB
{
void IA.Test()
{
Console.WriteLine("Hi from IA");
}
void IB.Test()
{
Console.WriteLine("Hi from IB");
}
public void Test() //default implementation
{
Console.WriteLine("Hi from Sample");
}
}

class Program
{
public static void Main(string[] args)
{
Sample t = new Sample();
t.Test(); // "Hi from Sample"
((IA)t).Test(); // "Hi from IA"
((IB)t).Test(); // "Hi from IB"
Console.ReadLine();
}
}

如果你想要默认行为,创建一个具有相同签名的方法(因此是一个隐式接口(interface)实现)并为这种情况添加代码。通常,您只需要显式实现。

关于c# - 将实现哪个接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3694772/

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