2014-11-06 3 views
0

그래서 C#을 처음 접했고 student_data 구조체를 클래스로 만들었습니다. 온라인에서 볼 때 많은 정보가 있습니다. 내가 찾지 못한 C++. 코드는 그대로 작동하지만 내 작업에 맞게 수정하려고합니다. 배열의 모든 값을 출력하는 콘솔 프로그램입니다.구조체를 클래스로 변환하는 방법

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

나는 그것을 시도하고 나에게 오류가 발생했습니다 "줄 수있는 매개 변수 '학생'은 컨트롤이 현재 메서드를 떠나기 전에 할당되어야합니다 : 'static void populateStruct (out student_data student, string fname, string surname, int id_number, string ptitle, string pcode) 및 "사용하지 않은 매개 변수 'student'사용" student.forename = fname; 도움을 주셔서 감사합니다. – JamesGoodwin

+0

@JamesGoodwin 당신이 그것에 할당하기 전에'new student_data()'를 만들어야합니다. 나는 수업을 '학생'에게 먼저 이름 바꾸기를 강력하게 권하고 싶습니다. 할당하기 직전에'new Student()'를 호출 한 다음'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(); 
    } 
    } 
} 
관련 문제