2014-11-06 5 views
0

Итак, я довольно новичок в C#, и мне было поручено преобразовать структуру класса student_data в класс, много информации, которую я нашел, когда я смотрел онлайн, - это сделать C++, который я не нашел полезным. Код работает так, как есть, но я изо всех сил пытаюсь изменить его, чтобы соответствовать моей задаче. Это консольная программа, которая выводит все значения в массиве.Как преобразовать Struct в класс

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
namespace Student 
{ 
    class Program 
    { 
     public struct student_data 
     { 
      public string forename; 
      public string surname; 
      public int id_number; 
      public float averageGrade; 
      public string ptitle; 
      public string pcode; 
     } 

     public struct module_data 
     { 
      public string mcode; 
      public string mtitle; 
      public int mark; 
     } 

     static void populateStruct(out student_data student, string fname, string surname, int id_number, string ptitle, string pcode) 
     { 
      student.forename = fname; 
      student.surname = surname; 
      student.id_number = id_number; 
      student.averageGrade = 0.0F; 
      student.ptitle = ptitle; 
      student.pcode = pcode; 
     } 

     static void populateModule(out module_data module, string mcode, string mname, int score) 
     { 
      module.mcode = mcode; 
      module.mtitle = mname; 
      module.mark = score; 
     } 

     static void Main(string[] args) 
     { 
      student_data[] students = new student_data[4]; 
      populateStruct (out students[0], "Mark", "Anderson", 1, "Title1", "Code1"); 
      populateStruct (out students[1], "John", "Smith", 2, "Title2", "Code2"); 
      populateStruct (out students[2], "Tom", "Jones", 3, "Title3", "Code3"); 
      populateStruct (out students[3], "Ewan", "Evans", 4, "Title4", "Code4"); 
      module_data[] modules = new module_data[4]; 
      populateModule (out modules [0], "MCode1", "MTitle1", 1); 
      populateModule (out modules [1], "MCode2", "MTitle2", 2); 
      populateModule (out modules [2], "MCode3", "MTitle3", 3); 
      populateModule (out modules [3], "MCode4", "MTitle4", 4); 

      foreach (student_data value in students) { 
       printStudent(value); 
      } 

      foreach (module_data value in modules) { 
       printModule(value); 
      } 

     } 

     static void printStudent(student_data student) 
     { 
      Console.WriteLine("Name: " + student.forename + " " + student.surname); 
      Console.WriteLine("Id: " + student.id_number); 
      Console.WriteLine("Av grade: " + student.averageGrade); 
      Console.WriteLine("Programme Title: " + student.ptitle); 
      Console.WriteLine("Programme Code: " + student.pcode); 
      Console.WriteLine(" "); 
     } 

     static void printModule(module_data module) 
     { 
      Console.WriteLine("Module Code: " + module.mcode); 
      Console.WriteLine("Module Title: " + module.mtitle); 
      Console.WriteLine("Module Mark: " + module.mark); 
      Console.WriteLine(" "); 
     } 
    } 
} 
+0

Зачем вам это нужно? – mtahmed

+0

Это часть моего класса. – JamesGoodwin

ответ

0

Вам просто нужно переименовать его из struct в class. Я также рекомендую взглянуть на руководства по стилю Microsoft и соглашения об именах для C#

+0

Я пробовал это, и это дало мне ошибку «Исходный параметр« student »должен быть назначен до того, как элемент управления оставит текущий метод» в строке: 'static void populateStruct (из student_data student, string fname, string surname, int id_number, string ptitle, string pcode) ' и« Использование непризнанного параметра «ученик» в строке 'student.forename = fname;' Спасибо за вашу помощь. – JamesGoodwin

+0

@JamesGoodwin вам нужно создать 'новый student_data()' перед тем, как вы его назначили. Я бы настоятельно рекомендовал сначала переименовать класс в 'Student'. перед тем, как вы назначите ему, вам нужно затем вызвать 'new Student()' then' student.Forname = "..."; ' – John

0

Попробуйте этот код, я думаю, вам нужно потратить некоторое время на чтение объектно-ориентированного программирования. Существует другой способ создания экземпляра CLASS. Я написал простой, чтобы вы могли понять.

Также, пожалуйста, прочитайте хорошие статьи и попробуйте образцы. Classes (C# Programming Guide)

using System; 
    using System.Collections.Generic; 
    using System.Text; 
    using System.Threading.Tasks; 

    namespace ConsoleApplication1 
    { 
    class Program 
    { 
    public class student_data 
    { 
     public string forename; 
     public string surname; 
     public int id_number; 
     public float averageGrade; 
     public string ptitle; 
     public string pcode; 
    } 

    public class module_data 
    { 
     public string mcode; 
     public string mtitle; 
     public int mark; 
    } 



    static void printStudent(student_data student) 
    { 
     Console.WriteLine("Name: " + student.forename + " " + student.surname); 
     Console.WriteLine("Id: " + student.id_number); 
     Console.WriteLine("Av grade: " + student.averageGrade); 
     Console.WriteLine("Programme Title: " + student.ptitle); 
     Console.WriteLine("Programme Code: " + student.pcode); 
     Console.WriteLine(" "); 
    } 

    static void printModule(module_data module) 
    { 
     Console.WriteLine("Module Code: " + module.mcode); 
     Console.WriteLine("Module Title: " + module.mtitle); 
     Console.WriteLine("Module Mark: " + module.mark); 
     Console.WriteLine(" "); 
    } 
    static void Main(string[] args) 
    { 
     List<student_data> students = new List<student_data>(); 
     student_data student = new student_data(); 
     student.forename = "Mark"; 
     student.surname = "Anderson"; 
     student.id_number = 1; 
     student.ptitle = "Title1"; 
     student.pcode = "Code1"; 

     students.Add(student); 

     List<module_data> modules = new List<module_data>(); 
     module_data module = new module_data(); 
     module.mcode = "MCode1"; 
     module.mtitle = "MTitle1"; 
     module.mark = 10; 

     modules.Add(module); 

     foreach (student_data value in students) 
     { 
      printStudent(value); 
     } 

     foreach (module_data value in modules) 
     { 
      printModule(value); 
     } 
     Console.ReadLine(); 
    } 
    } 
} 
Смежные вопросы