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);
    }

This seems to work :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 回答