Полю нигде не присваивается значение, поэтому оно всегда будет иметь значение null - C#

Узнай цену своей работы

Формулировка задачи:

Пишу программу которая должна png картинки преобразовывать в матрицу (матрица заносится в массив).Т.к. картинки имеют разный размер пришлось использовать List. Появилась Такая ошибка "Полю "PNGarray.ListIslands" нигде не присваивается значение, поэтому оно всегда будет иметь значение по-умолчанию null", и при запуске программы выдаёт исключение "ArgumentNullException: Путь не может быть неопределённым"
Листинг программы
  1. public static class PNGarray
  2. {
  3. #region Переменные
  4. private static string TempPath;
  5. private static string TempName;
  6. private static string DocPath;
  7. private static char PathSim = '\u005C';
  8. private static List<byte[,,]> ListIslands;
  9. private static byte[,,] islands;
  10. private static string[] PNGList;
  11. private static string[] TempList;
  12. private static uint[,] Sizes = { { 100, 100 } };
  13. private static byte NumberOfSizes = 1;
  14. private static byte counter = 0;
  15. private static string[] SizeCounter;
  16. private static uint Height;
  17. private static uint Width;
  18. private static byte Count;
  19. private static Bitmap png;
  20. private static System.Drawing.Color temp;
  21. struct Colors
  22. {
  23. public static System.Drawing.Color white = System.Drawing.Color.FromArgb(255, 255, 255, 255);
  24. public static System.Drawing.Color blue = System.Drawing.Color.FromArgb(255, 0, 162, 232);
  25. public static System.Drawing.Color green = System.Drawing.Color.FromArgb(255, 34, 177, 76);
  26. public static System.Drawing.Color gray = System.Drawing.Color.FromArgb(255, 127, 127, 127);
  27. public static System.Drawing.Color yellow = System.Drawing.Color.FromArgb(255, 255, 242, 0);
  28. public static System.Drawing.Color orange = System.Drawing.Color.FromArgb(255, 255, 127, 39);
  29. }
  30. #endregion
  31. #region Перегрузки функции Start
  32. public static List<byte[,,]> Start(string folder)
  33. {
  34. TempPath = System.IO.Path.GetTempPath() + folder;
  35. TempName = TempPath + PathSim + "temp";
  36. DocPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + PathSim + folder;
  37. GetTempList();
  38. GetPNGList();
  39. if (TempList != PNGList)
  40. {
  41. UpdateTemp();
  42. }
  43. ReadPNG();
  44. return ListIslands;
  45. }
  46. public static List<byte[,,]> Start(string folder, bool check)
  47. {
  48. TempPath = System.IO.Path.GetTempPath() + folder;
  49. TempName = TempPath + PathSim + "temp";
  50. DocPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + PathSim + folder;
  51. if (check)
  52. {
  53. CheckPaths(folder);
  54. }
  55. GetTempList();
  56. GetPNGList();
  57. if (TempList != PNGList)
  58. {
  59. UpdateTemp();
  60. }
  61. ReadPNG();
  62. return ListIslands;
  63. }
  64. public static List<byte[,,]> Start(string folder, byte numberofsizes, uint[,] sizes)
  65. {
  66. TempPath = System.IO.Path.GetTempPath() + folder;
  67. TempName = TempPath + PathSim + "temp";
  68. DocPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + PathSim + folder;
  69. NumberOfSizes = numberofsizes;
  70. Sizes = sizes;
  71. GetTempList();
  72. GetPNGList();
  73. if (TempList != PNGList)
  74. {
  75. UpdateTemp();
  76. }
  77. ReadPNG();
  78. return ListIslands;
  79. }
  80. public static List<byte[,,]> Start(string folder, bool check, byte numberofsizes, uint[,] sizes)
  81. {
  82. TempPath = System.IO.Path.GetTempPath() + folder;
  83. TempName = TempPath + PathSim + "temp";
  84. DocPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + PathSim + folder;
  85. NumberOfSizes = numberofsizes;
  86. Sizes = sizes;
  87. GetTempList();
  88. GetPNGList();
  89. if (check)
  90. {
  91. CheckPaths(folder);
  92. }
  93. if (TempList != PNGList)
  94. {
  95. UpdateTemp();
  96. }
  97. ReadPNG();
  98. return ListIslands;
  99. }
  100. #endregion
  101. #region Преобразование картинок
  102. static void ReadPNG()
  103. {
  104. FileStream TempStream = new FileStream(TempName, FileMode.Open);
  105. FileStream SizeCounterStream = new FileStream(TempPath + PathSim + "SizeCounter", FileMode.Open);
  106. StreamReader FromTemp = new StreamReader(TempStream);
  107. StreamReader FromSizeCounter = new StreamReader(SizeCounterStream);
  108. bool end = false;
  109. string Line;
  110. while (!end)
  111. {
  112. Line = FromSizeCounter.ReadLine();
  113. if (Line == "End.")
  114. {
  115. end = true;
  116. break;
  117. }
  118. SizeCounter = Line.Split('*');
  119. Height = Convert.ToUInt32(SizeCounter[0]);
  120. Width = Convert.ToUInt32(SizeCounter[1]);
  121. Count = Convert.ToByte(SizeCounter[2]);
  122. islands = null;
  123. islands = new byte[Count, Height, Width];
  124. for (byte z = 0; z < Count; z++)
  125. {
  126. png = new Bitmap(FromTemp.ReadLine());
  127. for (int i = 0; i < Height; i++)
  128. {
  129. for (int j = 0; j < Width; j++)
  130. {
  131. temp = png.GetPixel(i, j);
  132. if (temp == Colors.white)
  133. {
  134. islands[z, i, j] = 0;
  135. }
  136. else if (temp == Colors.blue)
  137. {
  138. islands[z, i, j] = 1;
  139. }
  140. else if (temp == Colors.gray)
  141. {
  142. islands[z, i, j] = 2;
  143. }
  144. else if (temp == Colors.orange)
  145. {
  146. islands[z, i, j] = 3;
  147. }
  148. else if (temp == Colors.green)
  149. {
  150. islands[z, i, j] = 4;
  151. }
  152. else if (temp == Colors.yellow)
  153. {
  154. islands[z, i, j] = 5;
  155. }
  156. else
  157. {
  158. islands[z, i, j] = 0;
  159. }
  160. }
  161. }
  162. }
  163. if (ListIslands == null)
  164. {
  165. ListIslands = new List<byte[,,]>() { islands };
  166. }
  167. else
  168. {
  169. ListIslands.Add(islands);
  170. }
  171. }
  172. }
  173. #endregion
  174. }

Решение задачи: «Полю нигде не присваивается значение, поэтому оно всегда будет иметь значение null»

textual
Листинг программы
  1.                 Line = FromSizeCounter.ReadLine();
  2.                 if (Line == "End.")
  3.                 {
  4.                     end = true;
  5.                     break;
  6.                 }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы