Самый быстрый ответ на ваш вопрос заключается в том, что вы можете привести объект в массив.
((Employee)obj).empID
Вы не показали, как вы определили массив;если это массив Employee, то вы можете безопасно выполнять приведение в foreach, но так как вы получаете ошибки, я предполагаю, что ваш массив может быть объектом или чем-то более высоким в иерархии наследования.
Если это так, то вот синтаксически то, что я имею в виду:
foreach (var obj in employeeArray)
{
Console.WriteLine("Employee ID: {0}", ((Employee)obj).empID);
Console.WriteLine("Employee Wage: {0}", ((Employee)obj).empWage);
Console.WriteLine();
}
Хотя приведение будет работать во многих случаях, этот вид кода является хрупким, поскольку он опирается на кучуиз предположений, самым большим из которых является то, что все в вашем массиве имеет тип Employee.Вместо того, чтобы делать предположение, вы можете просто заставить компилятор принудительно применить это для вас, используя общий список, а не простой массив.Чтобы сделать это, вы определите коллекцию следующим образом:
List<Employee> employeeArray = new List<Employee>();
Один последний метод, который вы можете использовать: C # имеет два достаточно надежных оператора приведения: это равно и как операторов.Оператор is позволит вам условно проверить, является ли что-то определенным типом, а оператор as позволяет вам выполнить приведение, но получить нулевое значение, если тип не совпадает.Вот варианты вашего цикла с обоими операторами, чтобы дать вам представление о том, как все может работать:
Ниже я использую is для проверки типа перед доступом к свойствам:
foreach (var obj in employeeArray)
{
if (obj is Employee)
{
Console.WriteLine("Employee ID: {0}", obj.empID);
Console.WriteLine("Employee Wage: {0}", obj.empWage);
Console.WriteLine();
}
}
В приведенном ниже примере я использую в качестве для попытки приведения, но проверяю, является ли оно нулевым, прежде чем пытаться получить доступ к свойствам.
foreach (var obj in employeeArray)
{
var emp = obj as Employee;
if (emp != null )
{
Console.WriteLine("Employee ID: {0}", obj.empID);
Console.WriteLine("Employee Wage: {0}", obj.empWage);
Console.WriteLine();
}
}