Модификаторы 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));
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д