c# - 子类到父类对象引用未设置为对象 C# 的实例
问题描述
我对 C# 中的继承非常陌生,我的问题是对象引用未设置为从父级到子级的对象实例
我尝试了从字符串到父级到子级的调试日志,并且现在我正在尝试这种情况现在发生了
这是我的家长班
public class GameManagerRevamped : MonoBehaviour
{
//Arrays Buttons
public GameObject[] gameButtons;
//Arrays ImagesSource
public Image[] ImagesSource;
//Source Images
public Sprite[] BlackImages;
//Instance Variables
public int ImagesClick =-1;
public int buttonOrder;
public string finalAnswer = "";
public string TryInheritance;
public virtual void buttonClicked()
{
ImagesSource[ImagesClick].sprite = BlackImages[ImagesClick];
gameButtons[buttonOrder].SetActive(false);
}
public virtual void firstButtonClicked()
{
ImagesClick += 1;
buttonOrder = 0;
buttonClicked();
finalAnswer += "";
Debug.Log(TryInheritance);
}
}
这是我的儿童班
public class FableScript : GameManagerRevamped
{
public override void buttonClicked()
{
base.buttonClicked();
}
public override void firstButtonClicked()
{
finalAnswer += "f";
TryInheritance =finalAnswer;
ImagesClick += 1;
buttonOrder = 0;
buttonClicked();
base.firstButtonClicked();
}
}
“TryInheritance”有效,但另一个未设置为实例对象。重点是当我单击按钮时,它会进入非活动状态:))
解决方案
从引发异常的原始问题中并不完全清楚,但是firstButtonClicked
在派生(子)类中重复几行然后在基(父)类中调用该方法之前确实看起来很奇怪。
例如,当您遵循代码路径时,ImagesClick
会增加两次(一次在派生类中,然后在父类中一次,同样的情况发生在buttonClicked()
我的猜测(因为我不知道实现)是按钮变为非活动状态因为buttonClicked()
被调用了两次。
继承的优点之一是您不需要重复公共代码。您的派生类firstButtonClicked
方法可能只适用于:
public override void firstButtonClicked()
{
finalAnswer += "f";
TryInheritance =finalAnswer;
base.firstButtonClicked();
}
推荐阅读
- ruby-on-rails - pg_search 用于自动完成或子字符串搜索
- ios - 更改导航栏中按钮的大小
- polymer - Polymer- 带有子分页的应用程序路由
- javascript - 检查嵌套包含/重复是否完成
- selenium - 如何在 selenium JAVA 中处理 IE 的下载弹出窗口
- javascript - 与 for 和 forEach 的几乎增加序列代码信号 javascript 问题
- javascript - 输入时占位符不会消失
- javascript - TypeORM innerJoinAndSelect 不选择
- angularjs - 发出补丁请求时出错
- jquery - 滴是如何做这个 div 动画的?