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

我收到一个错误,因为 Line public Queue m_Queue 中预期的语法错误“(”;

4

7 回答 7

6

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

public Queue<IEnvelopeFactory> m_Queue<IEnvelopeFactory>;

你期望第二个<IEnvelopeFactory>做什么?它为Queue<T>. 它应该只是:

public Queue<IEnvelopeFactory> m_Queue;

...虽然理想情况下你一开始就不会有公共领域。

(我也建议不要仅仅为了它而添加终结器。极少需要终结器。另外,如果你有一个Dispose方法,你为什么不实现IDisposable?)

于 2012-10-24T10:27:21.673 回答
1

尝试更改为:

public abstract class IEnvelopeFactory {    
    public Queue<IEnvelopeFactory> m_Queue;
}
于 2012-10-24T10:26:37.407 回答
1

您已经强指定类型,无需在变量名中添加泛型部分:

public Queue<IEnvelopeFactory> m_Queue;
于 2012-10-24T10:26:55.983 回答
0
public Queue<IEnvelopeFactory> m_Queue;

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

于 2013-01-11T00:46:08.570 回答
0

制作m_Queue<IEnvelopeFactory>=>m_Queue

换句话说:

public Queue<IEnvelopeFactory> m_Queue;

如果你不想要,出于某种原因,立即初始化它。

于 2012-10-24T10:26:26.343 回答
0

也许是因为它应该是:

public Queue<IEnvelopeFactory> m_Queue = new Queue<IEnvelopeFactory>();
于 2012-10-24T10:27:47.840 回答
0

将您的代码更改为 -

public Queue<IEnvelopeFactory> m_Queue;

队列类的语法 -

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

您可以在类中定义一个引用变量 -

public Queue<IEnvelopeFactory> m_Queue;

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

public Queue<IEnvelopeFactory> m_Queue = new Queue<IEnvelopeFactory>();
于 2012-10-24T10:28:05.390 回答