2

このコード (c++) を c# に移植するにはどうすればよいですか?

template <class entity_type>
class State {
public:
    virtual void Enter(entity_type*) = 0;
    virtual void Execute(entity_type*) = 0;
    virtual void Exit(entity_type*) = 0;
    virtual ~State() { }
};
4

4 に答える 4

6

それが本当に純粋な抽象基底クラスであると仮定すると、次のようになります。

interface State<T>
{
    void Enter(T arg);
    void Execute(T arg);
    void Exit(T arg);
};

ただし、正確な引数渡し規則は厄介です。何をしたいのかを正確に知らなければ、C# で何をすべきかを正確に言うことは困難です。おそらく、void FunctionName(ref T arg)より適切かもしれません。

于 2012-06-22T10:28:58.200 に答える
3

ある種のもの:

interface State<T> : IDisposable
{
    void Enter(T t);
    void Execute(T t);
    void Exit(T t);
}
于 2012-06-22T10:30:29.073 に答える
1
public abstract class State<entity_type>
    {
        public abstract void Enter(entity_type obj);
        public abstract void Execute(entity_type obj);
        public abstract void Exit(entity_type obj);
    }

これはうまくいくようです:D

于 2012-06-22T10:51:32.360 に答える
-1

あなたはこのように書くことができます

abstract class State<T> : IDisposable where T : EntityType
{
    public abstract void Enter(T t);
    public abstract void Execute(T t);
    public abstract void Exit(T t);

    public abstract void Dispose();
}

T を EntityType クラスに修正します。

于 2012-06-22T10:31:26.227 に答える