#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")
};