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

为什么我得到这个编译器错误?我的参数在这两种情况下都分配给 value

4

4 回答 4

13

您没有为传递给方法的参数分配任何值 -ipAddressport. 无需声明 newIpPort变量,只需将值分配给您传入的参数:

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”,就像这里一样,就像它被返回一样,否则它会给出这个人得到的错误。

于 2013-09-16T12:34:30.333 回答
7

不,您创建了另一个变量 - int Port,它与out int port. 您没有为实际的 out 参数分配值。ipAddressout 参数也是如此。

于 2013-09-16T12:33:11.660 回答
2

您没有为这两个out变量赋值。您只是将值分配给您在方法中创建的值。

于 2013-09-16T12:32:51.687 回答
2

很明显,您不会在方法中的任何位置为参数分配任何out值。ipAddressport

于 2013-09-16T12:33:26.690 回答