Модификаторы out и ref - C#

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

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

Эта функция :
        private void correctFMas0(ref List<string> FData, out double TimeADC, out double FreqADC, out int FramesADC, ref bool FHaracters)
        {
            if (FData[0] == "Oscilloscope Data File")
            {
                FHaracters = true;
                for (int i = 0; i < 19; i++)
                {
                    if (i == 2)
                        FramesADC = Int16.Parse(FData[0].Replace("Number of frames: ", String.Empty), CultureInfo.InvariantCulture);
                    if (i == 7)
                        FreqADC = 1000 * Double.Parse(FData[0].Replace("Input Rate In kHz: ", String.Empty), CultureInfo.InvariantCulture);
                    if (i == 8)
                        TimeADC = Double.Parse(FData[0].Replace("Input Time In Sec: ", String.Empty), CultureInfo.InvariantCulture);
                    FData.RemoveAt(0);
                }
            }
            else
            {
                FHaracters = false;
                TimeADC = 5;
                FramesADC = FData.Count;
                FreqADC = 10000;
            }
        }
вызывается из другой:
        public void getMas(List<string> FileList)
        {
            bool FHaracters = true;
            double TimeADC, FreqADC;
            int FramesADC;
            List<string> FData = new List<string>();
            for (int f = 0; f < FileList.Count; f++)
            {
                foreach (var line in File.ReadLines(FileList[f]))
                    FData.Add(line);
                if (f == 0)
                    correctFMas0(ref FData, out TimeADC, out FreqADC, out FramesADC, ref FHaracters);///////////////////// Вызов вторичной функции
                if(f>0)
                    if (FHaracters)
                        for (int i = 0; i < 19; i++)
                            FData.RemoveAt(0);
            }
        }

Error 1 The out parameter 'FramesADC' must be assigned to before control leaves the current method Error 2 The out parameter 'FreqADC' must be assigned to before control leaves the current method Error 3 The out parameter 'TimeADC' must be assigned to before control leaves the current method

Честно говря заманался, не понимаю в чём ошибка. ref - обязательно объявить и инициализировать в главной функции, там где вызываешь вторичную функцию. out - в главной ф-ии только объявляешь, инициализация же внутри вызываемой(вторичной) функции. Помоему я всё правильно понял?!

Решение задачи: «Модификаторы out и ref»

textual
Листинг программы
 public void getMas(List<string> FileList,out double[,] masStol, out double[,] masDUS)
        {
            for (int f = 0; f < FCount; f++)
            { masStol = new double[FramesADC, FCount];
                masDUS = new double[FramesADC, FCount];
                for (int i = 0; i < FramesADC; i++)
                {
                    masStol[i, f] = (Double.Parse(FData[i].Split(" ;:\t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)[0], CultureInfo.InvariantCulture));
                    masDUS[i, f] = (Double.Parse(FData[i].Split(" ;:\t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)[1], CultureInfo.InvariantCulture));
                }
            }

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


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

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

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