Java から移植しようとしているGraph クラスの一部である次の 2 つのコンストラクターについて質問があります。
public Graph(int V)
{
this.m_V = V; this.m_E = 0;
adj = new Bag<int>[V];
for (int v = 0; v < V; v++)
adj[v] = new Bag<int>();
}
public Graph(TextReader inpt) : this(int.Parse (inpt.ReadLine()))
{
//int V = int.Parse (inpt.ReadLine());
int E = int.Parse (inpt.ReadLine());
//this(V);
for (int i = 0; i < E; i++)
{ // Add an edge.
string[] inputs = inpt.ReadLine ().Split (' ');
int v = int.Parse (inputs [0]);
int w = int.Parse (inputs [1]);
addEdge(v, w);
}
}
それが書かれているように、そしてそれはきれいではありませんが、2番目のコンストラクターは最初の引数 V で最初のコンストラクターを呼び出します。
私の質問は、V が入力シーケンスの 2 番目の整数である場合 (つまり、ReadLine() を 2 回呼び出す必要がある場合) はどうなるかということです。その場合、同様のコンストラクター チェーン呼び出しはどのように見えるでしょうか? また、一部のロジックを別のメソッドにエクスポートしなくても、連鎖は可能でしょうか?
編集
主な質問は、この議論が行われているときに気付いていると思いますが、C#のコンストラクターとJavaのコンストラクターの柔軟性についてです。たとえば、2 回this(v)
呼び出した後に Java で呼び出すことはできますReadLine()
が、C# で同じことを行うにはどうすればよいでしょうか?