Member 10711706 Ответов: 2

Присвоение значения члену внутреннего класса


Я создал файл класса exclass.cs, который имеет 2 класса exclass и exMember.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PModels
{
    public class exclass
    {
        public string classId { get; set; }
        public string clientId { get; set; }
        public string clientName { get; set; }
        public string divisionId { get; set; }

        public List<exMember> memberships1 { get; set; } = new List<exMember>();
    }
    public class exMember
    {
      
        public string consumerId { get; set; }
      




    }
}



Я хочу присвоить значение consumerID, которое находится внутри класса exMember. Он дает ошибку NullReference, когда я присваиваю значение.

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

public exclass SearchMember()
       {
           List<exclass> memberInfo = new List<exclass>();
           try
           {
               exclass vm = new exclass();
               vm.classId = "009";
               vm.clientId = "444";
               vm.clientName = "abc";
               vm.divisionId = "008";
                vm.memberships1[0].consumerId = "23456";

               memberInfo.Add(vm);



           }
           catch(Exception ex)
           {
               MessageBox.Show(ex.ToString());
               return null;
           }



       }

2 Ответов

Рейтинг:
14

Maciej Los

Вместо этого:

vm.memberships1[0].consumerId = "23456";


Использовать это:
vm.memberships1.Add(new exMember(){consumerId="23456"});


Примечание: memberships1 список был инициирован, но он пуст (не имеет никакого элемента). Поэтому, когда вы пытаетесь обратиться к первому элементу в списке, это вызывает ArgumentOutOfRangeException (НЕ один NullReferenceException!!!).

Кстати: почему clientId и consumerId это тип строки? Для чисел вы должны использовать правильный тип данных!


CPallini

5.

Maciej Los

Спасибо, Карло.

Member 10711706

Даже это вызывает исключение System Null Reference

Maciej Los

В какой линии? Что такое полное сообщение об ошибке?

Пожалуйста, обратитесь к этому: c# - что такое исключение NullReferenceException и как его исправить? - переполнение стека[^]

Member 10711706

vm.memberships1.Add(new exMember(){consumerId="23456"}); для этого

Richard Deeming

Это наводит на мысль, что вы еще не инициализировали memberships1 собственность. Это означает, что код, который вы запускаете, не является кодом, который вы разместили в своем вопросе.

Maciej Los

Хорошая мысль!

Richard Deeming

NB: Более простым способом создания объектов было бы:

List<exclass> memberInfo = new List<exclass>
{
    new exclass
    {
        classId = "009",
        clientId = "444",
        clientName = "abc",
        divisionId = "008",
        memberships1 = new List<exMember>
        {
            new exMember
            {
                consumerId = "23456",
            },
        },
    },
};

Maciej Los

Мой виртуальный 5!

Member 10711706

System.NullRefernceException: ссылка на объект не установлена на экземпляр объекта

Maciej Los

Нужно больше деталей! Скопируйте и вставьте полное сообщение об ошибке (с подробностями).

Member 10711706

Полная ошибка-system.NullRefernceException: ссылка на объект не установлена на экземпляр объекта

Maciej Los

Нет, это не полное сообщение об ошибке. Должен быть указан источник этой ошибки.

Рейтинг:
0

CPallini

Вы забыли создать экземпляр программы exMember класс.
Изменение от

Цитата:
vm.divisionId = "008";
vm.memberships1[0].consumerId = "23456";

к
vm.divisionId = "008";
vm.memberships1.Add(new exMember());
vm.memberships1[0].consumerId = "23456";


Maciej Los

Другой способ добиться того же самого ;)
5ed!

Member 10711706

Даже это вызывает исключение System Null Reference

F-ES Sitecore

Вы все время говорите, что это создает исключение, что информации недостаточно для того, чтобы кто-то вам помог. Вы должны сказать, какая строка вызвала исключение. Приведенный выше фрагмент работал нормально для меня.