我对以下两个构造函数有疑问,它们都是我试图从 Java 移植过来的Graph 类的一部分:
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);
}
}
正如它所写的那样,并且令人愉快的是它并不漂亮,第二个构造函数将使用第一个参数 V 调用第一个构造函数,这是应该的。
我的问题是,如果 V 是输入序列中的第二个整数会发生什么(这意味着我必须调用 ReadLine() 两次),在这种情况下,类似的构造函数链接调用会如何?而且,如果不将某些逻辑导出到另一种方法中,甚至可以进行链接吗?
编辑
主要问题,我想我在讨论中意识到这一点,是关于 C# 中的构造函数与 java 构造函数的灵活性。例如,我可以this(v)
在调用两次后在 java 中调用ReadLine()
,但是如何在 C# 中实现相同的功能?