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

Syntax Error '(' expected in the Line public Queue m_Queue; としてエラーが発生します。

4

7 に答える 7

6

これは、抽象クラスであることとは関係ありません。それは単に無効な変数宣言です:

public Queue<IEnvelopeFactory> m_Queue<IEnvelopeFactory>;

2番目に何をすることを期待し<IEnvelopeFactory>ていましたか?のジェネリック型引数を指定していQueue<T>ます。次のようにする必要があります。

public Queue<IEnvelopeFactory> m_Queue;

...理想的には、そもそも public フィールドを持たないでしょう。

(また、ファイナライザーを単に追加することもお勧めしません。ファイナライザーが必要になることはほとんどありません。また、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;

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 に答える