Полю нигде не присваивается значение, поэтому оно всегда будет иметь значение 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;
                }

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


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

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

10   голосов , оценка 4.2 из 5
Похожие ответы