使用参数&#34; out&#34;没有指定<variable>

时间:2018-03-20 04:30:24

标签: c# methods

以下代码有错误:

  

使用参数&#34; out&#34;没有分配&#39;备份&#39;

public void StartProgram()
{
    string backup = " ";
    NewContact(backup: out backup);
}

void NewContact(out string backup)
{
    string contact = "Bob";
    backup = backup + contact; // Error here
}

我无法确定问题所在,方法NewContact(out string backup)正在使用out参数。  因此,当方法完成时,应该在StartProgram()方法中为变量存储设置一个新值。

(该变量用于存储正在创建的所有联系人)

2 个答案:

答案 0 :(得分:4)

out关键字表示仅用于输出而不用于输入的参数。因此,参数的第一次使用声明out 必须才能成为作业。在NewContact方法中,第一次使用backup参数位于:

backup = backup + contact;

该代码连接backupcontact,然后将结果分配给backup。这意味着您首次使用backup参数是一个连接,这不是一个赋值,因此是不允许的。

为什么你要尝试连接那些没有用价值的东西?如果您希望backup在该点具有值,则该参数必须用作输入和输出,因此应声明为ref而不是out

答案 1 :(得分:0)

根据 Out 关键字在C#中的使用,我们需要在调用方法(NewContact)中分配变量,然后用于操作。所以您可以编写如下代码:

void NewContact(out string backup)
{
    backup = string.Empty; // Or any value that your logic needs.
    string contact = SnapsEngine.ReadString("Enter the contact name");
    string address = SnapsEngine.ReadMultiLineString("Enter " + contact + " address");
    string number = SnapsEngine.ReadString("Enter " + contact + " number");
    Storeinfo(contact: contact, address: address, number: number);
    backup = backup + contact;

    SnapsEngine.WaitForButton("Continue");
}