Doo*_*Doo 2 .net c# reference anonymous-methods
刚开始并需要所有的帮助.以下代码将无法运行.错误消息msg表示"引用未设置为对象的实例",它指向WriteLine方法中的employee引用.请帮助
class Program
{
static void Main(string[] args)
{
List<Employee> empList = new List<Employee>()
{
new Employee { ID = 101, Salary = 6000000, Name = "Jane" },
new Employee{ ID = 102, Salary = 6000000, Name = "Jane" },
new Employee { ID = 103, Salary = 6000000, Name = "James" },
new Employee{ ID = 104, Salary = 6000000, Name = "Jasmie" },
new Employee { ID = 105, Salary = 6000000, Name = "Janet" },
};
Predicate<Employee> emPredicate = new Predicate<Employee>(getEmpName);
Employee employee = empList.Find(emp=> emPredicate(emp));
Console.WriteLine(" ID = {0}, Name = {1}",employee.ID,employee.Name );
Console.ReadLine();
}
public static bool getEmpName(Employee em)
{
return em.ID == 002;
}
}
class Employee
{
public int ID { get; set; }
public int Salary { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果你的程序在运行时抛出一个异常,那就意味着它会编译
没有员工身份证002.这就是为什么该Find方法返回null并且你得到了NullReferenceException.
我会为我的方法使用更合适的名称.例如getEmpName,不返回它返回bool的名称,这会使您的谓词有点混乱.你可以命名它 GetEmployeeById,你可以id在你的方法中添加一个参数然后它是有道理的.你也可以使用:
Employee employee = empList.Find(emp => emp.ID == 2);
Run Code Online (Sandbox Code Playgroud)如果您只是想找到ID为2的员工.
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |