Создать экземпляр строки [] - PullRequest
0 голосов
/ 11 мая 2018

Я работаю над консольным приложением, которое также имело ссылку на библиотеку классов. В библиотеке классов у меня есть следующий код.

namespace SomeClass  
{  
    public class ClassOne  
    {  
        public string[] SupportedFiles;  
    }  
} 

А в консольном приложении program.cs я пытаюсь назначить SupportedFiles.

class Program  
    {  
        public ClassOne class1 { get; set; }  
        public Program()  
        {  
            class1.SupportedFiles = new string[] { "Test", "Test" };
           //class1.SupportedFiles[0] = "First";
           //class1.SupportedFiles[1] = "Second"; 
        }  
    }

Но линия class1.SupportedFiles = new string[] { "Test", "Test" }; бросает

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

Что мне не хватает? Неужели я так глуп, когда создаю массив строк? Пожалуйста, помогите мне.

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Вы должны инициализировать свой объект перед доступом к его членам.Для этого у вас есть несколько (основных) опций:

class Program  
{  
    public ClassOne Class1 { get; set; }  
    public Program()  
    {  
        Class1 = new ClassOne();
        Class1.SupportedFiles= new string[] { "Test", "Test" };
    }  
}

или даже лучше:

class Program  
{  
    public ClassOne Class1 { get; set; }  
    public Program()  
    {  
        Class1 = new ClassOne()
        {
            SupportedFiles = new string[] { "Test", "Test" }
        };
       //class1.SupportedFiles[0] = "First";
       //class1.SupportedFiles[1] = "Second"; 
    }  
}

или, если вы используете C#6 и выше, у вас есть такая вещь, как автоинициализаторы:

class Program  
{  
    public ClassOne Class1 { get; set; } = new ClassOne();
    public Program()  
    {  
        Class1.SupportedFiles= new string[] { "Test", "Test" };
       //class1.SupportedFiles[0] = "First";
       //class1.SupportedFiles[1] = "Second"; 
    }  
}
0 голосов
/ 11 мая 2018

Вам не хватает экземпляра класса, в котором присутствует string[]

Попробуйте сделать это до доступа к string[]

ClassOne cOne = new ClassOne();

Не пропустите добавление ссылки вашей библиотеки классов в проект, гдевы хотите получить доступ к этой строке, а также включить пространство имен в program.cs file

Это может быть вашим рабочим решением:

using SomeClass;
class Program  
    {  
        //Not required to create property of ClassOne
        //public ClassOne class1 { get; set; }  
        public Program()  
        {  
           //In this way, you can create instance of class.
           ClassOne class1 = new ClassOne();
           //Now with the help of instance of class, you can access all public properties of that class
            class1.SupportedFiles= new string[] { "Test", "Test" };
           //class1.SupportedFiles[0] = "First";
           //class1.SupportedFiles[1] = "Second"; 
        }  
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...