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