C#错误将新的struct变量传递给方法?

时间:2017-04-14 01:31:53

标签: c# methods struct parameters arguments

我有一个方法应该接受一个结构变量并返回一个bool。这很好 - 至少在语法方面,也许。

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

稍后在按钮单击方法中,我将数据传递给struct变量的字段(newGuy),然后将newGuy传递给上面的方法,我被告知newGuy是一个未分配的局部变量。< / p>

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

我觉得这是一个简单的修复,但我是新的,并且应该是它应该是什么。我环顾四周无济于事,我不能偏离我使用的过程太远,因为它是任务的一部分。

2 个答案:

答案 0 :(得分:1)

您需要使用运营商newGuy初始化new。您可以将其字段初始化与声明组合:

Employee newGuy = new Employee {
    id = nextIDnumber
,   Name = txtbName.Text
,   department = (string)comboDept.SelectedItem
,   title = comboJob.SelectedText
,   phone = txtbPhone.Text
};

答案 1 :(得分:0)

您需要实例化变量的实例 - 如下所示:

Employee newGuy = new Employee();
newGuy.id = nextIDnumber;
...

你也可以把它写成&#39; var newGuy = new Employee();&#39; (取决于你问的是谁,这是更好的语法...)

你也可以创建你的对象:(注意 - 这需要你的&#39; set&#39;方法可以访问)

Employee newGuy = new Employee()
  {
      id = nextIDnumber,
      Name = "something",
      ... 
  };

我还建议在变量名中使用一致的套管。 (id,Name,title,...)。通常,c#的标准是将PascalCase用于公开可用的方法/属性。