Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 11.02.2010
Сообщений: 4
1

Матрица класса

11.02.2010, 14:19. Показов 657. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Работаю на Visual C# 2008. У меня возник вопрос.
Я создаю класс со следующим содержимым
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
 
namespace VectorMAP.Web
{
    public class Road1
    {
        public string Name;
        public string NO;
        public double[] x;
        public double[] y;
        public double length;
        public byte numlanes;
        public byte Vakt;
        public int i;
        public int j;
        public bool Error;
    }
}
Потом описываю его в виде матрицы

Road1[] numEmployers;
numEmployers = new Road1[100];
Начинаю присваивать значение

numEmployers[1].NO = "17";

И он выводит ошибку:

"В экземпляре объекта не задана ссылка на объект."

Как будто я не описал этот класс
В чем причина, не подскажете?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2010, 14:19
Ответы с готовыми решениями:

Разработка класса Матрица
Добрый день, задали такое вот задание, кто может помочь? Хотя бы пример подобной работы скинуть,...

Методы для класса «Матрица»
Класс: Матрица Члены класса: Размерность матрицы,элементы матрицы. Методы: Конструктор,...

Разработать шаблонные функции класса «Матрица»
Написать код программы. Разработать шаблонные функции и классы. класс МАТРИЦА. Для класса...

Создать класс Матрица — массивы массивов из класса Вектор
Добрый вечер, помогите с программой: есть класс Вектор: class Vector { private...

7
мну довольно <(-__-)l
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
11.02.2010, 18:35 2
когда создаешь массив все объекты изначально равни null или 0.
тебе требуется либо определить конструктор без параметров, либо определять дополнительно каждый объект.

Добавлено через 3 минуты
как мне кажется, с таким подходом, тебе будет куда как лучше работать с структурами.

У них выше быстродействие, но они могут наследовать только интерфейсы и не могут наследоваться сами, не требуют конструкторов (точнее они запрещены), не требуют дополнительных 4байтов на ссылку (как для класса).
0
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
11.02.2010, 19:17 3
...но если хочется с классами можно создать статический метод в классе для инициализации массива, например так

C#
1
2
3
4
5
6
7
public static void InitArr( Road1 arr)
{               
    for (int i=0; i< arr.Length; ++i)
    {
        arr[i] = new Road1(); //или как-то другой конструктор
    }
}
и отправь туда массив Road1.InitArr(numEmployers);
0
мну довольно <(-__-)l
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
11.02.2010, 19:23 4
C#
1
2
3
4
5
6
7
public static void InitArr( Road1 arr)
{                               
        for (int i=0; i< arr.Length; ++i)
        {
                arr[i] = new Road1(); //или как-то другой конструктор
        }
}
небольшой недочет
C#
1
public static void InitArr( Road1[] arr)
можно но не очень красиво)
0
0 / 0 / 0
Регистрация: 11.02.2010
Сообщений: 4
11.02.2010, 21:02  [ТС] 5
Спасибо, завтра попробую
0
16 / 16 / 1
Регистрация: 12.11.2008
Сообщений: 39
12.02.2010, 21:58 6
dominionish Please TRY this CODE

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
 
namespace VectorMAP.Web
{
    public class Road1
    {
        public string Name;
        public string NO;
        public double[] x;
        public double[] y;
        public double length;
        public byte numlanes;
        public byte Vakt;
        public int i;
        public int j;
        public bool Error;
    }
 
// BEGIN MAIN CODE
 
static void Main()
{
int count=100; // (count) eta kolichestvo Employers
Road1[] numEmployers;
numEmployers = new Road1[count];
 
for(int i=0;i<count;i++) { numEmployers[i]=new Road1();  }
 
// TEPER MOJNA IZMINIT VSE OBYEKTI VNUTRI MASSIVA...
 
numEmployers[0].Name="Dr.ShaX";
numEmployers[1].Name="dominionish";
 
// ....
//I tak dale....
 
}
 
// END  MAIN  CODE
}
0
4337 / 1506 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
13.02.2010, 13:01 7
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
У них выше быстродействие, но они могут наследовать только интерфейсы и не могут наследоваться сами, не требуют конструкторов (точнее они запрещены)
Как это запрещены?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
public class Program
{
    static public void Main()
    {
        Struct s1 = new Struct();
        Console.WriteLine(s1.i);
        Struct s2 = new Struct(4);
        Console.WriteLine(s2.i);
    }
}
public struct Struct
{
    public int i { get; set; }
    public Struct(int k) : this()
    {
        i = k;
    }
}
0
0 / 0 / 0
Регистрация: 11.02.2010
Сообщений: 4
13.02.2010, 16:34  [ТС] 8
Спасибо вам, Dr.ShaX!!! Теперь я полностью разобрался!
0
13.02.2010, 16:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2010, 16:34
Помогаю со студенческими работами здесь

Создание конструкторов для класса "Матрица"
Здравствуйте уважаемые форумчане) Вообщем суть дела вот в чём: Разработать класс для...

Создание класса "матрица"
нужно создать класс матрица в котором сделать Складывание матриц, умножение, инвертирование знака,...

Реализация класса матрица
День добрый форум! Хочу узнать ваше мнение по поводу того, как лучше реализовать класс матриц....

Создание класса Матрица
Не могу понять почему вылитает из программы вот код #include &lt;iostream&gt; using namespace std; ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru