Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
27 / 0 / 1
Регистрация: 01.06.2017
Сообщений: 94
1

Инициализировать массив в конструкторе

22.04.2018, 12:44. Просмотров 1895. Ответов 5
Метки нет (Все метки)

Почему нельзя инициировать массив в конструкторе класса следующим образом marks = {1,2,3};?? Через for работает, через поэлементное присваивание (напр. marks[0] = 1) работает,а marks = {1,2,3}; ругается? пишет: Ошибка 3 В качестве оператора могут использоваться только выражения присваивания, вызова, инкремента, декремента и создания нового объекта D:\C#\laba10_1\laba10_1\CodeFile1.cs 15 22 laba10_1


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Collections.Generic;
 
class Student 
{
    public string name;
    public int group;
    public int [] marks ;
    public Student() { }
    public Student (string n, int g)
    {
        name = n;
        group = g;
        marks = {1,2,3};
    }
 
}
 
class Programm 
{
    static void Main() 
    {
        Student stud = new Student();
        Console.WriteLine(stud.group);
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2018, 12:44
Ответы с готовыми решениями:

Инициализировать массив в конструкторе
У меня проблема: как инициализировать массив в конструкторе? public schoolkid(int Number, int...

Инициализировать массив в конструкторе структуры
Привет всем. Знатоки подскажите. Как инициализировать массив в конструкторе структуры, массив...

Инициализировать и изменить массив
как инициализировать массив с помощью литеральных значений. как преобразовать массив типа int в...

Инициализировать массив названиями цветов
/*Дан массив из названий цвета.С клв вводится слово.Если оно задает название цвета. * Сохранить...

5
2672 / 1937 / 976
Регистрация: 14.08.2016
Сообщений: 6,624
22.04.2018, 12:55 2
C#
1
marks = new int[]{1,2,3};
1
27 / 0 / 1
Регистрация: 01.06.2017
Сообщений: 94
22.04.2018, 13:02  [ТС] 3
Да,так код работал...но мне интересно почему без new не работает....
ведь Если происходит инициализация, оператор new можно упускать:
string[] seasons = {"зима","весна","лето","осень"}; //корректно
0
2672 / 1937 / 976
Регистрация: 14.08.2016
Сообщений: 6,624
22.04.2018, 13:27 4
Цитата Сообщение от IrenaIT Посмотреть сообщение
string[] seasons = {"зима","весна","лето","осень"};
это инициализация
Цитата Сообщение от IrenaIT Посмотреть сообщение
public int[] marks;
marks = {1,2,3};
это присваивание ссылки, но ссылка нужна на что-то, вот тут надо использовать new, что бы это что-то создать
1
260 / 221 / 108
Регистрация: 09.12.2015
Сообщений: 652
22.04.2018, 13:32 5
IrenaIT, в вашем случае поле marks не зависит от параметров конструктора,
поэтому его можно задать с помощью инициализатора поля:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   class Student
   {
      public string name;
      public int group;
      public int[] marks = { 1, 2, 3 };
 
      public Student() { }
 
      public Student(string n, int g)
      {
         name = n;
         group = g;
      }
   }
1
27 / 0 / 1
Регистрация: 01.06.2017
Сообщений: 94
22.04.2018, 13:49  [ТС] 6
спасибо! въехала..это же как с классами ...Memory obj = new Memory (); а потом мы это obj присваиваем чему хотим...

Добавлено через 3 минуты
его можно задать с помощью инициализатора поля...это если класс. у меня изначально структура была. Так работает:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct Student 
{
    public string name;
    public int group;
    public int [] marks;
    public Student (string n, int g, int [] mas)
    {
        name = n;
        group = g;
        if (mas.Length == 5) marks = mas; 
            else
            {
                marks = new int[5];             
            }
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2018, 13:49

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Инициализировать массив в сборке *.dll
Задача в следующем. В сборке (.длл) в главном классе создать и инициализировать двухмерный массив...

Как правильно инициализировать массив?
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;...

Как инициализировать массив в цикле
Возможно ли как то сделать следующие: string valuesToCheck; foreach (DataRow Column in...

Не могу инициализировать массив объектов
Выдает ошибку: "Требуется имя метода" Понимаю, что код быдловатый... class Ceil { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.