必须在控制离开当前方法之前指定out参数

时间:2013-09-16 12:31:46

标签: c#

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

为什么我收到此编译器错误? 我的参数在两种情况下分配给值

4 个答案:

答案 0 :(得分:12)

您没有为传递给方法的参数指定任何值 - ipAddressport。不要声明新的IpPort变量,只需将值分配给您传入的参数:

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参数ipAddressport分配任何值。