Полю нигде не присваивается значение, поэтому оно всегда будет иметь значение null - C#
Формулировка задачи:
Пишу программу которая должна png картинки преобразовывать в матрицу (матрица заносится в массив).Т.к. картинки имеют разный размер пришлось использовать List. Появилась Такая ошибка "Полю "PNGarray.ListIslands" нигде не присваивается значение, поэтому оно всегда будет иметь значение по-умолчанию null", и при запуске программы выдаёт исключение "ArgumentNullException: Путь не может быть неопределённым"
public static class PNGarray { #region Переменные private static string TempPath; private static string TempName; private static string DocPath; private static char PathSim = '\u005C'; private static List<byte[,,]> ListIslands; private static byte[,,] islands; private static string[] PNGList; private static string[] TempList; private static uint[,] Sizes = { { 100, 100 } }; private static byte NumberOfSizes = 1; private static byte counter = 0; private static string[] SizeCounter; private static uint Height; private static uint Width; private static byte Count; private static Bitmap png; private static System.Drawing.Color temp; struct Colors { public static System.Drawing.Color white = System.Drawing.Color.FromArgb(255, 255, 255, 255); public static System.Drawing.Color blue = System.Drawing.Color.FromArgb(255, 0, 162, 232); public static System.Drawing.Color green = System.Drawing.Color.FromArgb(255, 34, 177, 76); public static System.Drawing.Color gray = System.Drawing.Color.FromArgb(255, 127, 127, 127); public static System.Drawing.Color yellow = System.Drawing.Color.FromArgb(255, 255, 242, 0); public static System.Drawing.Color orange = System.Drawing.Color.FromArgb(255, 255, 127, 39); } #endregion #region Перегрузки функции Start public static List<byte[,,]> Start(string folder) { TempPath = System.IO.Path.GetTempPath() + folder; TempName = TempPath + PathSim + "temp"; DocPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + PathSim + folder; GetTempList(); GetPNGList(); if (TempList != PNGList) { UpdateTemp(); } ReadPNG(); return ListIslands; } public static List<byte[,,]> Start(string folder, bool check) { TempPath = System.IO.Path.GetTempPath() + folder; TempName = TempPath + PathSim + "temp"; DocPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + PathSim + folder; if (check) { CheckPaths(folder); } GetTempList(); GetPNGList(); if (TempList != PNGList) { UpdateTemp(); } ReadPNG(); return ListIslands; } public static List<byte[,,]> Start(string folder, byte numberofsizes, uint[,] sizes) { TempPath = System.IO.Path.GetTempPath() + folder; TempName = TempPath + PathSim + "temp"; DocPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + PathSim + folder; NumberOfSizes = numberofsizes; Sizes = sizes; GetTempList(); GetPNGList(); if (TempList != PNGList) { UpdateTemp(); } ReadPNG(); return ListIslands; } public static List<byte[,,]> Start(string folder, bool check, byte numberofsizes, uint[,] sizes) { TempPath = System.IO.Path.GetTempPath() + folder; TempName = TempPath + PathSim + "temp"; DocPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + PathSim + folder; NumberOfSizes = numberofsizes; Sizes = sizes; GetTempList(); GetPNGList(); if (check) { CheckPaths(folder); } if (TempList != PNGList) { UpdateTemp(); } ReadPNG(); return ListIslands; } #endregion #region Преобразование картинок static void ReadPNG() { FileStream TempStream = new FileStream(TempName, FileMode.Open); FileStream SizeCounterStream = new FileStream(TempPath + PathSim + "SizeCounter", FileMode.Open); StreamReader FromTemp = new StreamReader(TempStream); StreamReader FromSizeCounter = new StreamReader(SizeCounterStream); bool end = false; string Line; while (!end) { Line = FromSizeCounter.ReadLine(); if (Line == "End.") { end = true; break; } SizeCounter = Line.Split('*'); Height = Convert.ToUInt32(SizeCounter[0]); Width = Convert.ToUInt32(SizeCounter[1]); Count = Convert.ToByte(SizeCounter[2]); islands = null; islands = new byte[Count, Height, Width]; for (byte z = 0; z < Count; z++) { png = new Bitmap(FromTemp.ReadLine()); for (int i = 0; i < Height; i++) { for (int j = 0; j < Width; j++) { temp = png.GetPixel(i, j); if (temp == Colors.white) { islands[z, i, j] = 0; } else if (temp == Colors.blue) { islands[z, i, j] = 1; } else if (temp == Colors.gray) { islands[z, i, j] = 2; } else if (temp == Colors.orange) { islands[z, i, j] = 3; } else if (temp == Colors.green) { islands[z, i, j] = 4; } else if (temp == Colors.yellow) { islands[z, i, j] = 5; } else { islands[z, i, j] = 0; } } } } if (ListIslands == null) { ListIslands = new List<byte[,,]>() { islands }; } else { ListIslands.Add(islands); } } } #endregion }
Решение задачи: «Полю нигде не присваивается значение, поэтому оно всегда будет иметь значение null»
textual
Листинг программы
Line = FromSizeCounter.ReadLine(); if (Line == "End.") { end = true; break; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д