在我的代码底部,突出显示“CustomerEmail”,并说Method必须具有返回类型。然后“返回突出显示说,”由于CustomerEmail(int)返回void,因此返回关键字后面不能跟一个对象表达式“我无法弄清楚CustomerEmail如何返回void?我错过了什么?
公共类CustomerCollection { 列出customerList = new List();
public List<Customer> CustomerList
{
get { return customerList; }
set { customerList = value; }
}
public void RegisterCustomer(int id, string first, string last)
{
Customer c = new Customer(id, first, last);
customerList.Add(c);
}
public void RegisterCustomer(int id, string first, string last,string phone,string email)
{
Customer c = new Customer(id, first, last,phone,email);
customerList.Add(c);
}
public void RemoveCustomer(int id)
{
//works if there is a single-parameter constructor and Equals method in Faculty class
Customer rem = new Customer(id);
customerList.Remove(rem);
}
public CustomerEmail(int id)
{
Customer findEmail = new Customer(id);
for (int i=0; i < customerList.Count;i++)
if (customerList[i].Equals(findEmail))
return customerList[i].CustomerEmail;
return null;
}
public FindCustomer(int id)
{
Customer find = new Customer(id);
for (int i = 0; i < customerList.Count; i++)
if (customerList[i].Equals(find))
return customerList[i];
return null;
}
}
答案 0 :(得分:0)
您必须为不返回值的方法声明返回类型(或void
)。看起来在这种情况下string
是合适的。使用Get
:
public string GetCustomerEmail(int id)
{
Customer findEmail = new Customer(id);
for (int i=0; i < customerList.Count;i++)
if (customerList[i].Equals(findEmail))
return customerList[i].CustomerEmail;
return null;
}
对于FindCustomer
Customer
似乎是合适的返回类型:
public Customer FindCustomer(int id)
{
Customer find = new Customer(id);
for (int i = 0; i < customerList.Count; i++)
if (customerList[i].Equals(find))
return customerList[i];
return null;
}
答案 1 :(得分:0)
您没有该方法的返回类型。所以你的方法签名是不正确的。
尝试将其更改为
public string CustomerEmail(int id)
和
public Customer FindCustomer(int id)
但是,如果您不想返回任何内容,则需要使用void
返回类型。
查看有关如何创建方法的MSDN文档
Methods (C# Programming Guide)
方法可以向调用者返回一个值。如果返回类型(方法名称之前列出的类型)不为void,则该方法可以使用return关键字返回该值。带有return关键字后跟一个与返回类型匹配的值的语句会将该值返回给方法调用者。 return关键字也会停止执行该方法。如果返回类型为void,则不带值的return语句仍然可用于停止方法的执行。如果没有return关键字,该方法将在到达代码块的末尾时停止执行。使用非void返回类型的方法需要使用return关键字返回值
答案 2 :(得分:0)
将方法更改为
public <return type> CustomerEmail(int id)
{
Customer findEmail = new Customer(id);
for (int i=0; i < customerList.Count;i++)
if (customerList[i].Equals(findEmail))
return customerList[i].CustomerEmail;
return null;
}
此处return type
是CustomerEmail
的类型。同样的解决方案适用于FindCustomer
方法。