Исключение ошибки ссылки на объект C # - не уверен, как установить значения массива

Я предполагаю, что я не устанавливаю массив правильно или что-то в этом роде, но это бросает «nullreferenceexception», когда он попадает в строку, где он фактически устанавливает новое значение массива в массив color_table (должно быть 7-я и 12-я строки того, что вы видите ниже). Как я должен писать так, чтобы он работал?

public int[] colors = new int[] { 0, 255, 0, 255, 0, 255 };

private int[][] color_table;

public void setcolors()
{
    this.color_table[0] = new int[] { 0, 0, 0 };
    for (int i = 1; i <= this.precision; i++) {
        int r = (((this.colors[1] - this.colors[0]) * ((i - 1)/(this.precision - 1))) + this.colors[0]);
        int g = (((this.colors[3] - this.colors[2]) * ((i - 1)/(this.precision - 1))) + this.colors[2]);
        int b = (((this.colors[5] - this.colors[4]) * ((i - 1)/(this.precision - 1))) + this.colors[4]);
        this.color_table[i] = new int[] { r, g, b };
    }
}

Я слышал что-то о том, что вы ДОЛЖНЫ инициализировать массив своей длиной, прежде чем использовать его, но: а) я не знаю, как это сделать, и б) я не уверен, что это проблема. Проблема в том, что я не знаю, какая длина массива будет. Я пробовал это безрезультатно:

private int[this.precision][3] color_table;

Благодаря!

0
добавлено
Просмотры: 2
nl ja de
@ user1653653: вы должны оставить оставшиеся массивы пустыми, как в моем примере.
добавлено автор jgauffin, источник
Он подчеркивает [3] красным цветом и говорит о недопустимом спецификаторе ранга: ожидаемый ',' или ']' ... Это то, что я пытался, прежде чем это не сработало.
добавлено автор sableguy00, источник
Ваша color_table никогда не инициализируется ни на какую длину ... Вы должны рассмотреть ее как [this.precision + 1] [3]
добавлено автор ryadavilli, источник

2 ответы

this.color_table has not been initialized. Hence you can't assign values to it.

Вы имели в виду что-то вроде этого:

public void setcolors()
{
    color_table = new int[precision + 1][];
    for (int i = 1; i <= this.precision; i++)
    {
        int r = (((this.colors[1] - this.colors[0]) * ((i - 1)/(this.precision - 1))) + this.colors[0]);
        int g = (((this.colors[3] - this.colors[2]) * ((i - 1)/(this.precision - 1))) + this.colors[2]);
        int b = (((this.colors[5] - this.colors[4]) * ((i - 1)/(this.precision - 1))) + this.colors[4]);
        this.color_table[i] = new int[] { r, g, b };
    }
}
3
добавлено
Вы должны объявить его в конструкторе (или методе), если precision не является константой ( private const int precision = 4; )
добавлено автор jgauffin, источник
Спасибо, что сработало :) Я не знал, что вам нужно оставить второй массив пустым, а затем моя другая проблема в том, что я пытался объявить его вне метода.
добавлено автор sableguy00, источник

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

    List color_table = new List();
...
    color_table.Add(new int[] { r, g, b });
0
добавлено
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)