Я читаю Структуры данных и алгоритмы с использованием C # (Майкл Макмиллан).
В главе 3 стр. 43 я нашел фрагмент кода, который принимает параметр в конструкторе, но создает объект без передачи чего-либо.
Это возможно?
4 ответа
У вас должен быть конструктор без параметров, и есть способ:
- 1: необязательный параметр
- 2: Множественное изменение
1: Необязательный параметр:
public class CArray {
private int[] arr;
private int upper;
private int numElements;
//Constructor with default value parameter
public CArray(int size = 0)
{
//Your logic must be here
}
}
2: Множественное переопределение
public class CArray {
private int[] arr;
private int upper;
private int numElements;
//Constructor with zero parameter
public CArray()
{
this = new CArray(0);
}
public CArray(int size)
{
//Your logic must be here
}
}
Итак, в конце и после определения вашего класса вы можете использовать два типа:
var MyArray1 = new CArray();
var MyArray2 = new CArray(10);
Конструктор без параметров по умолчанию недоступен, если вы определяете пользовательский конструктор с параметрами в своем классе.
В этом случае, если вы хотите сохранить конструктор без параметров, вы должны явно определить его в своем классе.
Таким образом, в вашем примере, на основе предоставленного вами определения класса, невозможно создать новый экземпляр следующим образом: new CArray()
Во-первых, да, это возможно, но в этом контексте я так не думаю. Вы можете создать несколько конструкторов, которые позволят такую ситуацию, например:
public CArray() {
this(5);
}
public CArray(int size){
arr = new int[size];
//other logic's must be here
}
Чтобы описать: первый конструктор более или менее является «конструктором по умолчанию», который войдет в другой конструктор с размером параметра. Вы также можете добавить еще несколько конструкторов.
Для компиляции кода CArray
должен иметь конструктор без параметров; наиболее вероятный синтаксис
public CArray()
: this(0) {
}
Т.е. если size
не указан, пусть он будет равен 0
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.