C#抽象类错误

Din*_*ian 1 c# abstract

public abstract class IEnvelopeFactory {

    public Queue<IEnvelopeFactory> m_Queue<IEnvelopeFactory>;

    public IEnvelopeFactory() { }

    ~IEnvelopeFactory() { }

    public virtual void Dispose() { }

    /// <summary>
    /// Parsing
    /// </summary>
    /// <param name="input"></param>
    /// <param name="envelope"></param>
    public abstract bool Parse(string input, out Envelope envelope);

    /// <summary>
    /// Formatting
    /// </summary>
    /// <param name="env"></param>
    /// <param name="envStr"></param>
    public abstract bool Format(Envelope env, out string envStr);
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,如语法错误'('行公共队列m_Queue中的';

Jon*_*eet 6

这与它是一个抽象类没有任何关系.它只是一个无效的变量声明:

public Queue<IEnvelopeFactory> m_Queue<IEnvelopeFactory>;
Run Code Online (Sandbox Code Playgroud)

你期望第二个<IEnvelopeFactory>做什么?它指定了泛型类型参数Queue<T>.它应该只是:

public Queue<IEnvelopeFactory> m_Queue;
Run Code Online (Sandbox Code Playgroud)

...虽然理想情况下你首先不会有公共领域.

(我也建议添加终结只是为了它的缘故.终结是非常很少用到.另外,如果你将有一个Dispose方法,你为什么不执行IDisposable?)