[英]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.