C#错误传递一个新的结构变量给方法?
我有一个方法,应该接受一个结构变量并返回一个布尔值。这工作正常 - 至少在语法方面,也许。C#错误传递一个新的结构变量给方法?
private bool equalsidcomparison(Employee newGuy)
{
foreach (Employee E in employees)
{ if (E.Name == newGuy.Name || E.phone == newGuy.phone) { return true; } return false; }
return false;
}
后来在点击一个按钮的方法,我在哪里将数据传递到结构体变量的字段(newGuy),然后通过newGuy上述方法,有人告诉我,newGuy是未分配的局部变量。
Employee newGuy;
newGuy.id = nextIDnumber;
newGuy.Name = txtbName.Text;
newGuy.department = (string)comboDept.SelectedItem;
newGuy.title = comboJob.SelectedText;
newGuy.phone = txtbPhone.Text;
foreach (Employee E in employees)
{
if (equalsidcomparison(newGuy) == true) { };
}
我觉得这是一个简单的解决方案,但我是新的,不知道该怎么做。我环顾四周无济于事,我不能离开我使用的过程太远,因为它是任务的一部分。
您需要用运营商new
初始化newGuy
。您可以通过声明结合其字段初始化:
Employee newGuy = new Employee {
id = nextIDnumber
, Name = txtbName.Text
, department = (string)comboDept.SelectedItem
, title = comboJob.SelectedText
, phone = txtbPhone.Text
};
完美。非常感谢你。 – aBoy
备注 - 可变结构是个坏主意...... –
您需要实例您的变量的实例 - 就像这样:
Employee newGuy = new Employee();
newGuy.id = nextIDnumber;
...
你也可以把它写为“无功newGuy =新员工();” (取决于谁你问,这是更好的语法...)
您还可以创建你的对象,如:(注 - 这需要你的“设置”方法可访问)
Employee newGuy = new Employee()
{
id = nextIDnumber,
Name = "something",
...
};
我也建议在变量名称中使用一致的套管。 (id,名称,标题,...)。一般来说,c#的标准是将PascalCase用于公共可用的方法/属性。
感谢您的回应和建议。我通常做一个体面的工作,以符合套管,但这个项目很匆忙,我有点懒 – aBoy
分配一个初始值。 –
这通常是其他数据类型的变量的解决方案,但我怎么去做一个结构?我想我必须通过并为其所有字段设置“0”值? – aBoy
当我说“赋予它初始值”时,我的意思是“Employee newGuy = new Employee();”局部变量必须在它所属的方法退出之前都有一个值。否则,你会得到你刚刚得到的编译器错误。 –