Hàm xuất không in ra thông tin

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Bai_2
{

    class Student
    {
            private string code = "";
            private string name = "";
            private int age = 0;


            public string Code;
            public string Name;
            public int Age;
            public string Nick;

            public override string ToString()
            {
                return "MSSV =" + Code + ", Hoten = " + Name + ", Tuoi =" + Age;
            }

            public void Xuat()
            {
                Console.WriteLine("Nick name {0}:", Nick);
            }

    }

        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(" Vidu Property trong C#");
                Console.WriteLine("-------------------------");

                Student s = new Student();
                s.Code = "1101";
                s.Name = " Bui Cuong";
                s.Age = 21;
                s.Nick = " Long ";
                Console.WriteLine("Thong ton sinh vien: {0}", s);
                s.Age += 1;
                Console.WriteLine(" Thong tin sinh vien: {0},", s);

                Console.ReadLine();
            }
        }
}


        }

        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(" Vidu Property trong C#");
                Console.WriteLine("-------------------------");

                Student s = new Student();
                s.Code = "1101";
                s.Name = " Bui Cuong";
                s.Age = 21;
                s.Nick = " Long ";
                Console.WriteLine("Thong tin sinh vien: {0}", s);
                s.Age += 1;
                Console.WriteLine(" Thong tin sinh vien: {0},", s);

                Console.ReadLine();
            }
        }
    }
}

Anh chị cho em hỏi là cái lệnh xuất Console.WriteLine(“Thong tin sinh vien: {0}”, s); khi xuất ra màn hình không chỉ hiện thông tin đưa vào hàm ToString mà ko hiện thông tin đưa vào hàm Xuat() vậy ạ. Cho e hỏi là khi xuất cái s đó ra thì cái j chạy cái j không chạy a.

Phương thức Xuat không chạy bạn nhé.
Muốn chạy Xuat, bạn gọi s.Xuat(); là được

Mình muốn biết tại sao xuất không chạy bn ơi trong khi cái ToString không gọi ra nhưng nó vẫn tự chạy đó thôi. Mình muốn biết tại sao lại như thế á.

Phương thức Write() và phương thức WriteLine() luôn gọi đến phương thức ToString() của đối tượng. Mỗi class và struct đều có phương thức ToString() mặc định, nếu bạn khai báo class mà không override ToString() thì ToString() trả về tên class/struct.

Bản thử override và không override ToString() rồi chạy code này xem:

static void Main(string[] args)
{
    Console.WriteLine(" Vidu Property trong C#");
    Console.WriteLine("-------------------------");
    
    Student s = new Student();
    Console.WriteLine(s);
    Console.WriteLine("**********");
    string tS = s.ToString();
    Console.WriteLine(tS);
    Console.ReadLine();
}
1 Like

Có thể hiểu phương thức WriteLine được code như sau:

void WriteLine(object o)
{
    string s = o.ToString();
    WriteLine(s);
}

void WriteLine(string s)
{
    ...
    .NET làm điều gì đó thần bí để xuất được chuỗi ra màn hình
    ...
}
1 Like

Cám ơn bạn đã giúp mình hiểu hàm WriteLine nhe. Nhưng bạn giải thích kĩ hộ mình vì sao mà khúc
Console.WriteLine(“Thong tin sinh vien: {0}”, s); thì chỉ có hàm ToString() được thực hiện mà khúc
Console.WriteLine(“Nick name {0}:”, Nick) lại không được thực hiện không ạ. MÌnh vẫn còn mơ hồ khúc này.

Vì bạn không gọi phương thức Xuat() chứ sao.
Khi bạn gọi phương thức WriteLine tức là trình biên dịch sẽ gọi phương thức ToString, thế thôi. Chẳng liên quan gì đến Xuat cả.

à mình hiểu rồi cám ơn bạn nhiều nhe

Mà mấy cái này bạn tìm đâu ra vậy. Thầy mình không hề nhắc tới mấy cái này lun

Học lập trình, làm nhiều, gặp nhiều vấn đề, tìm tòi giải quyết, bạn sẽ gặp được rất nhiều cái hay. Cái gì cũng hay thầy biết nói cái gì trong khi giờ dạy có hạn?

1 Like

ừm cám ơn bạn :))))))

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?