小编Sha*_*awn的帖子

如何为方法调用转换对象?

我有以下类层次结构:

public class AI {
    public AI() { }
    public virtual void Update(float frameTime) { }
}

public class Boss : AI {
    public Boss() : base() { }
    public override void Update(float frameTime) { 
        Console.WriteLine("Boss Update"); 
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个包含AI变量的Character,然后我将Boss实例存储在其中并尝试将其转换为Boss的Update函数而不是基类.

AI ai = new Boss();
(Boss)ai.Update(0f);
Run Code Online (Sandbox Code Playgroud)

这不起作用,在C#中执行此操作的正确方法是什么?它是正确的另一个AI类,我甚至没有工作必须投它在所有,它只是跑更新的正确版本,所以我一定是无意中改变了一些东西.

c# methods casting

4
推荐指数
1
解决办法
3135
查看次数

在C#中创建派生类时,是否可以使用n参数函数覆盖0参数虚函数?

我检查了MSDN和其他几个网站,但我仍然不确定我得到了答案.如果你有一个带有虚函数Init()的Parent类,那么我可以 - 在派生类中 - 有一个覆盖函数Init(int num),或者你只需​​要为你创建的每个派生类创建一个新函数?如果我没有错,后者会导致你在Child类中有2个Init函数,对吧?这就是我的意思:

    public class Parent {
        protected int a;

        public Parent() {
            a=1;
        }

        public virtual void Init() {
        }
    }

    public class Child : Parent {

        public Child() {
        }

        //is this allowed?
        public override void Init(int multiplier) {
        }

        //or do i have to do this and have 2 Init functions?
        public void Init(int multiplier) {
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# virtual inheritance overriding function

1
推荐指数
1
解决办法
172
查看次数

标签 统计

c# ×2

casting ×1

function ×1

inheritance ×1

methods ×1

overriding ×1

virtual ×1