Deepak.xip Ответов: 2

Нужна помощь с инициализацией объекта в C#


класс clsCustomer {
public int custid {get; set;}
public clsOrder[] objOrders{get; set;}
}

класс clsOrder{
общественная int "Кодзаказа" {получить; набор;}
public int ProductId {get; set;}
количество публичных инт {получить; набор;}
}

Необходимо присвоить значения объекту clsCustomer вместе с деталями заказа, как показано ниже.
clsCustomer objCustomer = новый clsCustomer();
objCustomer. custid = 123;
objCustomer.objOrders[0].Кодзаказа = 25255525; (получаю пустой ссылкой исключение на этой линии.)

Что я уже пробовал:

Попробовал инициализировать clsOrder внутри конструктора clsCustomer, но все равно получил ошибку.

F-ES Sitecore

objOrders-это массив, поэтому вам нужно ссылаться на элемент в индексе, например

. objOrders[0].Кодзаказа

вы не можете сделать что-то вроде

.objOrders.Кодзаказа

поскольку он не знает, в каком порядке вы хотите установить OrderId

Deepak.xip

Извините за опечатку @F-ES Sitecore.Я делаю то же самое, но все еще получаю ошибку.

2 Ответов

Рейтинг:
8

OriginalGriff

Вы не можете просто объявить свойство массива и просто использовать его - это "пустая ссылка" при создании переменной, потому что система понятия не имеет, насколько большим должен быть массив.
Добавьте код в свой конструктор для создания массива и все будет в порядке:

public class clsCustomer 
   {
   public int custid {get; set;}
   public clsOrder[] objOrders{get; set;}
   public clsCustomer(int arrayNeeded = 10)
      {
      objOrders = new clsOrder[arrayNeeded];
      }
   }


Рейтинг:
14

Satya Prakash Swain

clsCustomer objCustomer = new clsCustomer();
          objCustomer.custid = 123;
          objCustomer.objOrders = new clsOrder[] {new clsOrder() { OrderId = 25255525 } };


Создание
objOrders 
с новым
clsOrder[]
и назначение
{new clsOrder() { OrderId = 25255525 } }
.