Как установить несколько записей в конструкторе

#c# #asp.net #.net

#c# #asp.net #.net

Вопрос:

Я не использую это в реальном приложении, но мне просто было любопытно, как это сделать (C #).

Я установил одну запись с образцами данных в конструкторе :

 public class MikesClass
{
    public MikesClass()
    {
     Id = 01; Name = "Mike";      
    }

    public int Id { get; set; }
    public string Name { get; set; }
}
  

но я не понимаю, как установить в нем другую запись :

 public MikesClass()
        {
         Id = 01; Name = "Mike";  

         Id = 02;  Name = "Tom"; ???

        }
  

Если это возможно сделать, каков синтаксис? Спасибо

Ответ №1:

Вы совершенно неправильно поняли, что такое конструктор. Конструктор предназначен для one single object . Это создает один единственный объект. Таким образом, вы не можете установить другую запись с его помощью. Эта запись будет другим объектом. Вы просто устанавливаете значения в качестве аргументов в constructor при создании другой записи.

Итак, должно быть как минимум так —

 public class MikesClass
{
    public MikesClass(int id, string name)
    {
        Id = id; 
        Name = name;      
    }

    public int Id { get; set; }
    public string Name { get; set; }
}
  

и в некотором отдалении при создании нескольких записей / объектов —

 var m1 = new MikesClass(0,"name1");
var m2 = new MikesClass(1, "name2");
  

Комментарии:

1. Конструктор создает экземпляр .

2. Отличное объяснение, спасибо. Я борюсь с ООП, но продолжаю практиковаться, чтобы, надеюсь, однажды понять это лучше.

Ответ №2:

Используя код, который вы указали выше, каждый раз, когда вы пишете:

 MikesClass mc = new MikesClass();
  

вы получите объект типа MikesClass со Id свойством, равным 1, и Name свойством, равным «Mike». Поскольку каждый экземпляр MikesClass представляет один объект, вы не можете иметь несколько объектов, представленных в нем.

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

 public MikesClass(int id, string name)
{
    Id = id;
    Name = name;
} 
  

Затем вы можете использовать этот код для создания нескольких MikesClass объектов следующим образом:

 MikesClass mike = new MikesClass(1, "Mike");
MikesClass tom = new MikesClass(2, "Tom");
  

Надеюсь, это имеет смысл.

Комментарии:

1. спасибо, но это не ответило на вопрос. Я знаю, как делать другие вещи, но просто хотел знать, как сделать то, что я просил.

2. Я думаю, это справедливое замечание. Вы не можете делать то, что вы конкретно хотите сделать. Однако вы могли бы использовать некоторую структуру списка внутри вашего класса и передавать несколько значений через конструктор. Это отчасти привело бы вас туда.

3. Приведенный ниже ответ резюмировал это: «Вы совершенно неправильно поняли, что такое конструктор». Я идиот.

Ответ №3:

То, что вы показываете, является конструктором. Он запускается при создании экземпляра класса MikeClass. Что вы хотите, так это создать несколько экземпляров. Может быть, в массиве?

 MikeClass[] array = new MikeClass[2];
    MikeClass mc = new MikeClass(); /first instance
    mc.Id = 1;
    mc.Name = "Mike";
    array[0] = mc;
    mc = new MikeClass(); //another instance
    mc.Id = 2;
    mc.Name = "Tom";
    array[1] = mc;
};
  

Для этого используется синтаксис инициализатора объекта:

 MikeClass[] array = new MikeClass[] {
    new MikeClass { Id = 1, Name = "Mike" }, //first instance
    new MikeClass { Id = 2, Name = "Tom" }  //another instance
};
  

Вы также можете создать конструктор для класса MikeClass, который принимает параметры:

 public MikeClass(int id, string name) {
    Id = id;
    Name = name;
}
  

Затем:

 MikeClass[] array = new MikeClass[] {
    new MikeClass(1, "Mike"),
    new MikeClass(2, "Tom")
};