Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C错误CS0738,当类继承自接口且类型继承自interfce type方法时_C#_Class_Interface - Fatal编程技术网

C# C错误CS0738,当类继承自接口且类型继承自interfce type方法时

C# C错误CS0738,当类继承自接口且类型继承自interfce type方法时,c#,class,interface,C#,Class,Interface,当类推动一个接口,接口有一个方法,返回类型为接口时,我得到了CS0738 类内返回类型是实现返回类型接口的结构 简单地说,此代码显示了问题: 公共接口IGame { 伊普莱尔·霍温; } 公共接口层 { int ID{get;} } 在课堂上: 公共类MyGame:IGame { //错误CS0738 公开我的玩家WhoWin { // ... 返回null; } } 公共类MyPlayer:IPlayer { 公共整数ID { 收到 { 返回ColorTranslator.ToWin32Col

当类推动一个接口,接口有一个方法,返回类型为接口时,我得到了CS0738

类内返回类型是实现返回类型接口的结构

简单地说,此代码显示了问题:

公共接口IGame { 伊普莱尔·霍温; } 公共接口层 { int ID{get;} } 在课堂上:

公共类MyGame:IGame { //错误CS0738 公开我的玩家WhoWin { // ... 返回null; } } 公共类MyPlayer:IPlayer { 公共整数ID { 收到 { 返回ColorTranslator.ToWin32Color; } } 公共色彩; } 我该怎么办?如何解决这个问题?

在MyGame类中将WhoWin的返回类型从MyPlayer更改为IPlayer,然后它就可以工作了

public class MyGame : IGame
{
    // CHANGE THIS TO IPlayer like here:
    public IPlayer WhoWin()
    {
        // ...
        return null;
    }
}

public class MyPlayer : IPlayer
{
    public int ID 
    {
        get
        {
            return ColorTranslator.ToWin32(Color);
        }
    }
    public Color Color;
}
在MyGame类中将WhoWin的返回类型从MyPlayer更改为IPlayer,这样它就可以工作了

public class MyGame : IGame
{
    // CHANGE THIS TO IPlayer like here:
    public IPlayer WhoWin()
    {
        // ...
        return null;
    }
}

public class MyPlayer : IPlayer
{
    public int ID 
    {
        get
        {
            return ColorTranslator.ToWin32(Color);
        }
    }
    public Color Color;
}
您可以创建IGame通用接口并应用where T:IPlayer约束

公共接口IGame,其中T:IPlayer { T WhoWin; } 然后像这样实现它

公共类MyGame:IGame { 公开我的玩家WhoWin { // ... 返回null; } } 您可以创建IGame通用接口并应用where T:IPlayer约束

公共接口IGame,其中T:IPlayer { T WhoWin; } 然后像这样实现它

公共类MyGame:IGame { 公开我的玩家WhoWin { // ... 返回null; } }
类不会继承接口-它会实现它。。。。。继承仅在类之间工作。请将返回类型设置为对象:公共对象WhoWin@marc_s我已经编辑了postA类,它不继承接口-它实现了它。。。。。继承仅在类之间工作。请将返回类型设置为对象:公共对象WhoWin@marc_s我编辑了这篇文章