下面的代码是完美运行的代码的精确副本。不同之处在于,此代码放置在 WCF 服务应用程序项目中,而工作代码来自 Windows 窗体应用程序项目。 foreach 中的代码无法访问,这很奇怪,因为我之前测试过该代码并且它有效,返回了正确的值
public IEnumerable<Employee> GetStudentDetails(string username,string password)
{
var emp = agrDb.LoginAuthentication(username, password);//procedure in the database thats returning two values
//Namely: EmployeeFirstName and EmployeeLastName
List<Employee> trainerList = new List<Employee>();
foreach (var item in emp)
{
//unreachable code here
Employee employ = new Employee();
employ.EmployeeFirstName = item.EmployeeFirstName;
employ.EmployeeLastName = item.EmployeeLastName;
trainerList.Add(employ);
//trainerList.Add(item.EmployeeLastName);
}
return trainerList;
}
如果数组或集合直到运行时才初始化,则 foreach 循环中的代码可能无法访问。
List<Employee> emp;
// Run when program starts, called from Program.cs
private void InitialiseApplication()
{
emp = new List<Employee>;
// Gather data for employees from... somewhere.
DataAccess.GetEmployees(emp);
}
private void DoStuff()
{
foreach (var item in emp)
{
// Do something.
}
}
上面的代码将返回警告,因为“emp”在设计时未初始化。
我在代码中的各个阶段(包括构造函数内)收到了相同的警告。但是,运行时流程不会受到影响,因为此时“emp”已初始化。
您的代码可能就是这种情况。检查程序“emp”在程序流程中何时何地被初始化。如果从视觉上看不明显,您可能需要“步入”程序才能实现此目的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)