Я пытаюсь создать 2D -массив классов. Под каждым классом 2 массива и их размеры. Этот класс будет дефолт по умолчанию функции BuildhighlightedAttrib (), чтобы быть доступной по всей форме. Я почти уверен, что все делаю правильно, но я продолжаю получать эту ошибку: < /p>
system.nullreferenceexexception: «Справочник по объекту не установлен на экземпляр объекта». воспроизводимый пример. Я получаю ошибку в строке: < /p>
highlightedAttrb[(uint)Role.GOALKEEPER][DEFEND].Key[0] = (uint)Goalkeeping.AERIAL_REACH;
< /code>
form1.cs
namespace MyApp
{
public partial class Form1 : Form
{
public const uint GOALKEEPER = 0;
public const uint DEFEND = 0;
public const uint SUPPORT = 1;
public const uint ATTACK = 2;
public const uint NUM_ROLES = 45;
public enum Goalkeeping
{
AERIAL_REACH = 0,
COMMAND_OF_AREA,
COMMUNICATION,
ECCENTRICITY,
FIRST_TOUCH,
HANDLING,
KICKING,
ONE_ON_ONES,
PASSING,
PUNCHING,
REFLEXES,
RUSHING_OUT,
THROWING,
SPARE /* One less attribute for GKs */
}
private MyClass[][] class1 = new MyClass[NUM_ROLES][];
public Form1 ()
{
InitializeComponent();
BuildHighlightedAttrb();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void BuildHighlightedAttrb()
{
/* Goalkeeper - Defend */
class1[GOALKEEPER][DEFEND] = new MyClass(6, 1);
class1[GOALKEEPER][DEFEND].Key[0] = (uint)Goalkeeping.AERIAL_REACH;
class1[GOALKEEPER][DEFEND].Key[1] = (uint)Goalkeeping.COMMAND_OF_AREA;
class1[GOALKEEPER][DEFEND].Key[2] = (uint)Goalkeeping.COMMUNICATION;
class1[GOALKEEPER][DEFEND].Key[3] = (uint)Goalkeeping.HANDLING;
class1[GOALKEEPER][DEFEND].Key[4] = (uint)Goalkeeping.KICKING;
class1[GOALKEEPER][DEFEND].Key[5] = (uint)Goalkeeping.REFLEXES;
class1[GOALKEEPER][DEFEND].Pref[0] = (uint)Goalkeeping.THROWING;
}
}
/* Classes */
public class MyClass
{
public MyClass(uint numKey, uint numPref)
{
this.Key = new uint[numKey];
this.Pref = new uint[numPref];
this.NumKey = numKey;
this.NumPref = numPref;
}
public uint[] Key { get; set; }
public uint[] Pref { get; set; }
public uint NumKey { get; set; }
public uint NumPref { get; set; }
}
}
< /code>
функциональныйnamespace TestApp
{
partial class Form1
{
private System.ComponentModel.IContainer components = null;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
private void InitializeComponent()
{
this.SuspendLayout();
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... inside-a-c
NullReferenceException При назначении значения индексу массива внутри класса [дубликат] ⇐ C#
Место общения программистов C#
1754354410
Anonymous
Я пытаюсь создать 2D -массив классов. Под каждым классом 2 массива и их размеры. Этот класс будет дефолт по умолчанию функции BuildhighlightedAttrib (), чтобы быть доступной по всей форме. Я почти уверен, что все делаю правильно, но я продолжаю получать эту ошибку: < /p>
system.nullreferenceexexception: «Справочник по объекту не установлен на экземпляр объекта». воспроизводимый пример. Я получаю ошибку в строке: < /p>
highlightedAttrb[(uint)Role.GOALKEEPER][DEFEND].Key[0] = (uint)Goalkeeping.AERIAL_REACH;
< /code>
form1.cs
namespace MyApp
{
public partial class Form1 : Form
{
public const uint GOALKEEPER = 0;
public const uint DEFEND = 0;
public const uint SUPPORT = 1;
public const uint ATTACK = 2;
public const uint NUM_ROLES = 45;
public enum Goalkeeping
{
AERIAL_REACH = 0,
COMMAND_OF_AREA,
COMMUNICATION,
ECCENTRICITY,
FIRST_TOUCH,
HANDLING,
KICKING,
ONE_ON_ONES,
PASSING,
PUNCHING,
REFLEXES,
RUSHING_OUT,
THROWING,
SPARE /* One less attribute for GKs */
}
private MyClass[][] class1 = new MyClass[NUM_ROLES][];
public Form1 ()
{
InitializeComponent();
BuildHighlightedAttrb();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void BuildHighlightedAttrb()
{
/* Goalkeeper - Defend */
class1[GOALKEEPER][DEFEND] = new MyClass(6, 1);
class1[GOALKEEPER][DEFEND].Key[0] = (uint)Goalkeeping.AERIAL_REACH;
class1[GOALKEEPER][DEFEND].Key[1] = (uint)Goalkeeping.COMMAND_OF_AREA;
class1[GOALKEEPER][DEFEND].Key[2] = (uint)Goalkeeping.COMMUNICATION;
class1[GOALKEEPER][DEFEND].Key[3] = (uint)Goalkeeping.HANDLING;
class1[GOALKEEPER][DEFEND].Key[4] = (uint)Goalkeeping.KICKING;
class1[GOALKEEPER][DEFEND].Key[5] = (uint)Goalkeeping.REFLEXES;
class1[GOALKEEPER][DEFEND].Pref[0] = (uint)Goalkeeping.THROWING;
}
}
/* Classes */
public class MyClass
{
public MyClass(uint numKey, uint numPref)
{
this.Key = new uint[numKey];
this.Pref = new uint[numPref];
this.NumKey = numKey;
this.NumPref = numPref;
}
public uint[] Key { get; set; }
public uint[] Pref { get; set; }
public uint NumKey { get; set; }
public uint NumPref { get; set; }
}
}
< /code>
функциональныйnamespace TestApp
{
partial class Form1
{
private System.ComponentModel.IContainer components = null;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
private void InitializeComponent()
{
this.SuspendLayout();
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79725501/nullreferenceexception-when-assigning-a-value-to-an-index-of-an-array-inside-a-c[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия