繁体   English   中英

C#抽象类错误

[英]C# Abstract Class Error

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中遇到语法错误'('的错误;

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

public Queue<IEnvelopeFactory> m_Queue<IEnvelopeFactory>;

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

public Queue<IEnvelopeFactory> m_Queue;

...尽管理想情况下您一开始就不会有公共场所。

(我还建议不要将终结只是为了它的缘故。终结是很少需要。另外,如果你将有一个Dispose方法,你为什么不实现IDisposable ?)

尝试更改为:

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

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

public Queue<IEnvelopeFactory> m_Queue;

使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;

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM