Announcement

Collapse
No announcement yet.

[C#] Sửa lỗi giùm

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C#] Sửa lỗi giùm

    mình đang viết 1 Console Application về quản lý sinh viên trên C#, application của mình có hai class là Students và Program như bên dưới, và lỗi sảy ra ở phương thức AddStudents() trong lớp Program, câu lệnh bị lỗi là arrStudents[iCount] = new Students();
    nó xuất thong báo lỗi khi nhấn F5: '_11520537.Students.Students()' is inaccessible due to its protection level
    Code:
    using System;
    
    namespace _11520537
    {
        public class Students
        {
            string name;
            int ID;
            DateTime dateOfBirth;
            string address;
            int phone;
            Students()
            {
                name = null;
                ID = 0;
                dateOfBirth = new DateTime();
                address = null;
                phone = 0;
            }
            Students(Students S)
            {
                name = S.name;
                ID = S.ID;
                dateOfBirth = S.dateOfBirth;
                address = S.address;
                phone = S.phone;
            }
            public void Input()
            {
                Console.Write("Enter Student' name:\t");
                name = Console.ReadLine();
                Console.Write("Enter Student' code:\t");
                ID = int.Parse(Console.ReadLine());
                Console.WriteLine("Enter Student' day of birth:\t");
                dateOfBirth = DateTime.Parse(Console.ReadLine());
                Console.Write("Enter Student' address:\t");
                address = Console.ReadLine();
                Console.Write("Enter Student' phone:\t");
                phone = int.Parse(Console.ReadLine());
            }
            public void Ouput()
            {
                Console.WriteLine("Name:\t" + name + "\nID:\t" + ID + "\nDay of Birth:\t" + dateOfBirth.ToShortDateString() + "\nAddress:\t" + address + "\nPhone:\t" + phone);
            }
        }
    }
    Code:
    using System;
    
    namespace _11520537
    {
        class Program
        {
            static Students[] arrStudents = new Students[100];
            const int n = 5;
            static void AddStudent()
            {
                for (int iCount = 0; iCount < n; iCount++)
                {
                    arrStudents[iCount] = new Students();
                    arrStudents[iCount].Input();
                }
            }
            static void OutputStudents()
            {
                for (int iCount = 0; iCount < n; iCount++)
                {
                    arrStudents[iCount].Ouput();
                }
            }
            static void Main(string[] args)
            {
                AddStudent();
                OutputStudents();
                Console.ReadLine();
            }
        }
    }
    Cảm ơn các bạn, mình đã giải quyết được lỗi này, nhưng có một điều mà mình không hiểu, nếu như khai báo hai hàm khởi tạo trong lớp Students như trên mà không có public ở trước thì không thể dùng nó (đây chính là lỗi và đã được giải quyết bang việc them public), nhưng một chuyện khá hay là nếu bỏ cả hai hàm khởi tạo trên (nghĩa là dùng hà khởi tạo mặc định) thì chương trình không báo lỗi, ai giải thích việc này dùm cái.
    Last edited by 11520537; 17-03-2013, 17:27.
    Tôi không hối tiếc những gì mình đã làm. Tôi chỉ hối tiếc những gì đã không làm khi có cơ hội!

  • #2
    Các biến khi khai báo trong C# nếu để hình thức truy cập là mặc định thì nó sẽ mặc định là private. Cho nên khi truy cập trong class khác nó không truy cập được. Muốn truy cập được thì nên tạo hàm tạo hoặc là khai báo public
    Tôi đã chọn và tôi sẽ đi bằng mọi cách.

    Comment


    • #3
      Bên class Students hàm khởi tạo Students() của bạn khai báo không tường minh nên chương trình hiểu là private , bạn thêm vào public trước hàm Students() là ok !!

      Comment

      LHQC

      Collapse
      Working...
      X