これは純粋に学問的な質問です。私は簡単に回避策を見つけました。
VB.Net クラスを C# に移植しているときに、new() ステートメントのパラメーターとして this キーワードを使用するクラスのフィールドの宣言に出くわしました。コンパイラは、「キーワード 'this' は現在のコンテキストでは使用できません」と言いました (VB コンパイラは、この状況に問題はありませんでした)。フィールドの初期化をクラスのコンストラクタに移動することで、これを簡単に回避できました。
編集:コメントを読んだ後、次のコードブロックを追加しました
public class cTransactions
{
private List Trans = new List();
private List Archive = new List();
private cDDs Debits = new cDDs(this); // complier error
//Keyword 'this' is not available in the current context
private string path = Directory.GetCurrentDirectory() + "\";
private bool dirty = false;
private int LastID;
// followed by Property declarations, ctor, methods etc.
//...
}
ただし、クラスのコンストラクターの実行前に使用できないキーワード「this」への参照を見つけることができません (ただし、言語仕様の 500 ページ以上でその啓示を見逃している可能性があります)。これは事実ですか、それともフィールド宣言の前の行の 1 つで何らかのエラーを確認する必要がありますか?