Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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# 我能';无法访问main中子类中的公共变量?_C#_Variables_Xna_Subclass_Base Class - Fatal编程技术网

C# 我能';无法访问main中子类中的公共变量?

C# 我能';无法访问main中子类中的公共变量?,c#,variables,xna,subclass,base-class,C#,Variables,Xna,Subclass,Base Class,有人能帮我吗 我在XNA上做游戏 我有一个GameObject类,它充当Character.class或Object.class 还有Game.class 我只是想问一下,我有一个子类GameObject,它有一个名为canJump的公共变量 由于某些原因,我甚至无法访问该变量 我有游戏对象角色=新角色() 此对象可以轻松访问基类的所有重写函数,但它不允许我使用公共变量。是的,编译器不知道GameObject实际上是一个字符。除非有充分的理由不这样做,否则只需使用字符: Character ch

有人能帮我吗

我在XNA上做游戏

我有一个GameObject类,它充当
Character.class
Object.class

还有
Game.class

我只是想问一下,我有一个子类
GameObject
,它有一个名为
canJump
的公共变量

由于某些原因,我甚至无法访问该变量

我有
游戏对象角色=新角色()


此对象可以轻松访问基类的所有重写函数,但它不允许我使用公共变量。

是的,编译器不知道
GameObject
实际上是一个
字符。除非有充分的理由不这样做,否则只需使用
字符

Character character = new Character();

多态性是这里的关键词。Minitech是正确的,编译器只知道它是一个游戏对象,所以您只能访问GameObjects接口。您可以使用overidden方法,因为它们也是GameObjects界面的一部分,所以在运行时您将实际获得该方法的角色版本。在代码中,您可以执行以下操作:

if(character is Character) //Character being the subclass
{
    (character as Character).DoSomeCharacterSpecificStuff;
}

举个例子:(人类扩展了动物)所有的人都是动物,但不是所有的动物都是人。嗯,编译器不知道,嗯?真奇怪。。。它如何知道使用重写的函数?子类中的私有变量?@user819511:它没有。运行时会这样做。至于子类,编译器知道子类是从父类派生的。