2016-11-22 3 views
0

Я пытаюсь создать структуры, и я не могу понять, как их использовать внутри функций. Позже мне нужно будет разработать фрагмент кода, который позволит мне добавлять учеников и повторно вводить некоторые детали.Структурный массив C# внутри функции

namespace struct_example 
{ 
    struct student 
    { 
     public int s_id; 
     public String s_name, c_name, s_dob; 
    } 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      student[] arr = new student[4]; 

      for (int i = 0; i < 4; i++) 
      { 
       fillplz(i); 
      } 
      for (int i = 0; i < 4; i++) 
      { 
       showplz(i); 
      } 
      Console.ReadKey(); 
     } 
     static void fillplz(int id) 
     { 
      Console.WriteLine("Please enter StudentId, StudentName, CourseName, Date-Of-Birth"); 
      arr[id].s_id = Int32.Parse(Console.ReadLine()); 
      arr[id].s_name = Console.ReadLine(); 
      arr[id].c_name = Console.ReadLine(); 
      arr[id].s_dob = Console.ReadLine(); 
     } 
     static void showplz(int id) 
     { 
      Console.WriteLine(arr[id].s_id); 
      Console.WriteLine(arr[id].s_name); 
      Console.WriteLine(arr[id].c_name); 
      Console.WriteLine(arr[id].s_dob); 
     } 
    } 
} 
+0

Можете ли вы объяснить, в чем именно проблема, с которой вы сталкиваетесь? Этот код выдает ошибку или отказывается компилировать или что-то еще? – Chris

+2

Ну прежде всего первым взглядом arr является массив в области Main только – bi0phaz3

+0

ну он возвращается 0's – Dawid

ответ

3

Единственная проблема в вашем коде, что вы пытаетесь получить доступ к arr, когда она не находится в области видимости.

Вы указали arr в своем методе Main, что означает, что он доступен только там. Если вы объявили это полем в своем классе, тогда вы сможете получить к нему доступ, и все будет работать так, как вы ожидали. В качестве альтернативы вы можете передать массив как параметр методам, которые его используют, и получить доступ к нему таким образом.

Вкратце: проблема не имеет ничего общего с структурами, это связано с определением переменных и вы столкнетесь с аналогичными проблемами с классом.

Дополнительное примечание: Когда я скомпилированный код (и хорошо сделано для дачи легко компилируемый пример кода) я получил такие ошибки, как:

ошибка CS0103: Имя «обр» не существует в текущий контекст

И бы включил точные номера строк и должен был точно сказать, как исправить вашу ошибку.

Смежные вопросы