list.add, кажется, добавляет ссылку на исходный объект?

Я создал пару пользовательских классов (NTDropDown а такжеNTBaseFreight), который я использую для хранения данных, которые я получаю из БД. Я инициализирую СписокNTBaseFreight и 2 списка для.NTDropDown

Я могу успешно использоватьList.Add чтобы добавить грузы в список грузов, но когда я отлаживаю код, мои 2 раскрывающихся списка содержат только 1NTDropDown, который всегда имеет те же значения, что иNTDropDown (Я'если предположить, что это проблема со ссылками, но что я делаю не так)?

Для примера, во втором ряду, если перевозчик иcarrier_label мы"001", "MyTruckingCompany" и я положил перерыв в заявлении дляfrt_carriersи frt_carriers и frt_modes будут содержать только 1 элемент в своем списке со значениями"001", "MyTruckingCompany"... те же значения в.NTDropDown

Код:

List frt_carriers = new List();
List frt_modes = new List();
List freights = new List();
NTDropDown tempDropDown = new NTDropDown();
NTBaseFreight tempFreight = new NTBaseFreight();

//....Code to grab data from the DB...removed

while (myReader.Read())
{
    tempFreight = readBaseFreight((IDataRecord)myReader);

    //check if the carrier and mode are in the dropdown list (add them if not)
    tempDropDown.value = tempFreight.carrier;
    tempDropDown.label = tempFreight.carrier_label;
    if (!frt_carriers.Contains(tempDropDown)) frt_carriers.Add(tempDropDown);

    tempDropDown.value = tempFreight.mode;
    tempDropDown.label = tempFreight.mode_label;
    if (!frt_modes.Contains(tempDropDown)) frt_modes.Add(tempDropDown);

    //Add the freight to the list
    freights.Add(tempFreight);
}

Ответы на вопрос(2)

Ваш ответ на вопрос