Как я могу включить мое свойство массива в конструктор класса и иметь возможность доступа к нему через инициализацию объекта? - PullRequest
0 голосов
/ 09 ноября 2018

Я очень новичок в программировании и в процессе обучения. вот мой код

namespace ConsoleApp9
{
    class Program
    {
        static void Main(string[] args)
        {
            Person p = new Person("john", "doe", tittles:null);
            Person td = new Person("tom","jones");
            Person w = new Person();
            Console.WriteLine(td);
            Console.WriteLine(p.SayHello("vahid"));
            var str = p.SayHello("nick");
            Console.WriteLine(str);
            p.DoSome();
            var m = w.Tittles[0];
            Console.WriteLine(m);



        }
    }
    public class Person
    {

        public string FirstName { get; private set; }
        public string LastName { get; private set; }
        private string[] tittles = new string[6] {
            "Mr","Mrs", "Miss","Sir", "Doctor","Sister"
        };
        public string[] Tittles
        {
            get { return tittles; }
            set { tittles = value; }
        }

        public Person()
        {

        }
        public Person(string firstName, string lastName)
        {
            FirstName = firstName;
            LastName = lastName;
        }
        public Person(string firstName, string lastName, string[] tittles  )
        {
            FirstName = firstName;
            LastName = lastName;
            Tittles = tittles;

        }
        public override string ToString()
        {
            return "Welcome to C# " + Tittles[0] + " " + FirstName + " " + LastName;
        }
        public string SayHello(string name)
        {
            return "hello " + name;
        }
        public void DoSome()
        {
            Console.WriteLine(FirstName + " "+ LastName + " this is a void method.");
        }

    }
}

у меня вопрос, как дать другое значение, отличное от нуля, в Person p = new Person ("john", "doe", tittles: null); заголовки это мой массив строк Я попробовал титры [1], например, но в результате я получил ошибку. Есть ли способ сделать это? спасибо

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Если вы создаете экземпляр класса с помощью конструктора, который принимает 3 аргумента, вы переопределите массив приватных полей titles в вашем классе. Я предполагаю, что вы хотите сохранить значения там, и поэтому вы должны создать экземпляр класса с помощью конструктора, который принимает 2 аргумента, поскольку он не касается свойства Titles

Person p = new Person("John", "Doe");

При создании экземпляра с тремя аргументами укажите массив строк:

Person p = new Person ("John", "Doe", new string[]{"title1", "title2"})
0 голосов
/ 09 ноября 2018

Вот один из способов сделать это:

Person p = new Person("john", "doe", new string[] { "one", "two" });

Или вы можете использовать ключевое слово params, чтобы определить конструктор, который принимает любое количество строк:

        public Person(string firstName, string lastName, params string[] tittles)
        {
            FirstName = firstName;
            LastName = lastName;
            Tittles = tittles;
        }

Затем вы можете создавать объекты Person с любым количеством заголовков без необходимости создания временного массива строк:

Person p = new Person("john", "doe", "one", "two");
Person j = new Person("jane", "doe", "one", "two", "three");
Person td = new Person("tom", "jones", "mr");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...