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

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

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

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

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
Листинг программы
  1.  public void getMas(List<string> FileList,out double[,] masStol, out double[,] masDUS)
  2.         {
  3.             for (int f = 0; f < FCount; f++)
  4.             { masStol = new double[FramesADC, FCount];
  5.                 masDUS = new double[FramesADC, FCount];
  6.                 for (int i = 0; i < FramesADC; i++)
  7.                 {
  8.                     masStol[i, f] = (Double.Parse(FData[i].Split(" ;:\t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)[0], CultureInfo.InvariantCulture));
  9.                     masDUS[i, f] = (Double.Parse(FData[i].Split(" ;:\t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)[1], CultureInfo.InvariantCulture));
  10.                 }
  11.             }

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


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

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

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

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

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

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