【问题标题】:C# inheritance - same identifier on either side of ':'C# 继承 - ':' 两侧的相同标识符
【发布时间】:2011-08-19 03:25:39
【问题描述】:

我知道:表示C#中的继承;

但是,当同一标识符出现在任一侧时,这意味着什么?

例如

class GameObject : GameObject {

【问题讨论】:

  • 您应该发布实际的 sn-p 代码。你的问题没有意义。
  • 你的意思是这样说?类派生:基{}
  • 表示编译器错误
  • 相同标识符 = GameObject....

标签: c# inheritance


【解决方案1】:

它不起作用,因为Visual Studio会抛出一个“循环依赖”错误,因为,当你考虑它时,GameObject继承自GameObject继承自GameObject继承自......换句话说,这是不可能的,所以没有任何意义(除了像 Neil 在 cmets 中提到的编译器错误)。

【讨论】:

  • ...继承自GameObject,后者又继承自GameObject,GameObject本身就是一个GameObject,一个GameObject派生自一个叫做GameObject的GameObject子类,它也是GameObject的父类,一个GameObject继承自其父类为 GameObject 的 GameObject 的子类...
  • @BoltClock - 我只是在编辑我的答案以包含无尽的......;)
【解决方案2】:

或者这是 Unicode

class GameObject
{

}
class GameObjеct : GameObject 
{

}

【讨论】:

    【解决方案3】:

    如果基类在不同的命名空间中声明,则您提供的语法是合法的 但是,您需要使用命名空间来解决命名冲突

    例子

       namespace A
       {
           class GameObject
           {
           }
       }
    
       namespace B
       {
    
          class GameObject: A.GameObject
          {
          }
       }
    

    另一个可能的场景涉及泛型,它允许类名重载。以下内容也将编译:

    class GameObject
    {
    }
    
    class GameObject<T> : GameObject
    {
    }
    
    class GameObject<T, T> : GameObject<T>
    {
    }
    

    【讨论】:

    • 从技术上讲,这两个例子看起来都不像 GameObject:GameObject。
    • 你是对的,从技术上讲它并不完全相同。我不知道作者想到了什么例子,所以我做了我最好的猜测。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多