C#抽象类错误


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

我在语法错误时遇到错误'('行公共队列m_queue;

这与它是抽象类无关。这只是一个无效的变量声明:

public Queue<IEnvelopeFactory> m_Queue<IEnvelopeFactory>;

您期望第二个<IEnvelopeFactory>做什么?它指定了Queue<T>的通用类型参数。应该只是:

public Queue<IEnvelopeFactory> m_Queue;

...尽管理想情况下,您首先不会有公共场所。

(我也建议只是为此而添加最终确定器。最终化的最终化是非常需要的。而且,如果您要拥有一个Dispose方法,为什么不实施IDisposable?)

您已经强烈指定了类型,无需将通用零件添加到变量名称:

public Queue<IEnvelopeFactory> m_Queue;

尝试更改为:

public abstract class IEnvelopeFactory {    
    public Queue<IEnvelopeFactory> m_Queue;
}

make m_Queue<IEnvelopeFactory> => m_Queue

换句话说:

public Queue<IEnvelopeFactory> m_Queue;

,如果您不想要某种原因,请立即初始化。

也许是因为它应该是:

public Queue<IEnvelopeFactory> m_Queue = new Queue<IEnvelopeFactory>();

将您的代码更改为 -

public Queue<IEnvelopeFactory> m_Queue;

队列类的语法 -

[SerializableAttribute]
[ComVisibleAttribute(false)]
public class Queue<T> : IEnumerable<T>, ICollection, 
    IEnumerable

您可以在类中定义一个参考变量为 -

public Queue<IEnvelopeFactory> m_Queue;

您可以在类中初始化队列变量 -

public Queue<IEnvelopeFactory> m_Queue = new Queue<IEnvelopeFactory>();
public Queue<IEnvelopeFactory> m_Queue;

就足够了:您已经指定了m_Queue变量的确切类型。

相关内容

最新更新