如何将此代码(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() { }
};
答案 0 :(得分:6)
假设它真的是一个纯粹的抽象基类,它的外观如下:
interface State<T>
{
void Enter(T arg);
void Execute(T arg);
void Exit(T arg);
};
传递约定的确切参数虽然很尴尬。如果不知道你想要做什么,很难确切地说你应该在C#中做些什么。可能void FunctionName(ref T arg)
可能更合适。
答案 1 :(得分:3)
有些事情:
interface State<T> : IDisposable
{
void Enter(T t);
void Execute(T t);
void Exit(T t);
}
答案 2 :(得分: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
答案 3 :(得分:-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类。