private void getDetails(out IPAddress ipAddress, out int port)
{
IPAddress Ip;
int Port;
try
{
Ip = IPAddress.Parse(textboxIp.Text);
Port = int.Parse(textboxPort.Text);
}
catch (Exception ex)
{
IPAddress Ip null;
int Port = -1;
MessageBox.Show(ex.Message);
}
}
为什么我收到此编译器错误? 我的参数在两种情况下分配给值
答案 0 :(得分:12)
您没有为传递给方法的参数指定任何值 - ipAddress
和port
。不要声明新的Ip
和Port
变量,只需将值分配给您传入的参数:
private void getDetails(out IPAddress ipAddress, out int port)
{
try
{
ipAddress = IPAddress.Parse(textboxIp.Text);
port = int.Parse(textboxPort.Text);
}
catch (Exception ex)
{
ipAddress = null;
port = -1;
MessageBox.Show(ex.Message);
}
}
编辑:对于其他开发人员,如果使用“out”,则必须允许变量能够在函数中的所有点设置 - 包括“if”语句和“catch”就像在这里一样,就像它被归还一样,或者它会给出这个家伙得到的错误。
答案 1 :(得分:7)
不,您创建了另一个变量int Port
,与out int port
不同。您没有为实际输出参数赋值。 ipAddress
输出参数也是如此。
答案 2 :(得分:2)
您没有为两个out
变量分配值。您只是将值分配给您在方法中创建的值。
答案 3 :(得分:2)
很明显,您不会在方法中的任何位置为out
参数ipAddress
和port
分配任何值。