以下代码有错误:
使用参数"out"而不分配"备份">
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()
方法中为变量存储设置一个新值。
(该变量用于存储正在创建的所有联系人(
out
关键字表示仅用于输出而不用于输入的参数。 因此,参数声明out
的第一个用法必须是赋值。 在NewContact
方法中,backup
参数的首次使用如下所示:
backup = backup + contact;
该代码连接backup
和contact
,然后将结果分配给backup
。 这意味着您第一次使用 backup
参数是串联,这不是赋值,因此是不允许的。
你为什么要尝试连接一些在这一点上没有有用价值的东西? 如果您期望backup
在这一点上可以有一个值,那么该参数必须用作输入和输出,因此应该声明为ref
而不是out
。
根据 C# 中的 out 关键字用法,我们需要在 Call Method( 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");
}