01/10/2018, 14:59

Console.ReadLine trong C#

Mọi người cho em hỏi :
Trong 1 class em đã public biến n; nhưng trong 3 trường hợp này ReadLine lúc được lúc không.
Em muốn hỏi vì sao vậy ạ ?
Em cảm ơn !
Case 1 :


Case này được
Case 2:

Báo lỗi n not in this context trong khi em đã public nó rồi.
Case 3:

Case 3 lại được ạ.

Aragami1408 viết 17:14 ngày 01/10/2018

Bạn cần show thêm class nhanvien để mình xem như nào nhé

Trần Hoàn viết 17:12 ngày 01/10/2018

Vấn đề không nằm ở ReadLine, vấn đề nằm ở class.

Khi bạn khai báo một class, một thuộc tính chỉ được khởi tạo với một giá trị mặc định. Việc thay đổi giá trị mặc định phải được thực hiện thông qua các phương thức.

Case1 của bạn, Convert.ToInt32(ReadLine())chính là khởi tạo giá trị mặc định.
Case3 của bạn, việc thay đổi giá trị của thuộc tính n được thực hiện qua phương thức.

Tuấn UIT viết 17:04 ngày 01/10/2018

Em tưởng như class trong C++, chỉ cần public là xài được không nhất thiết phải qua phương thức ạ.

Văn Dương viết 17:14 ngày 01/10/2018

Bởi vì cái dòng bôi đỏ là một câu lệnh xử lý thông thường và nó buộc phải nằm trong một hàm hoặc một constructor, một khối get hoặc set mà không được phép đứng một mình như thế kia.

Chỉ có những câu lệnh khai báo hoặc khởi tạo mới được phép đứng như vậy. Không phải C# mà gần như các ngôn ngữ có cú pháp họ nhà C (C#,C/C++,Java) đều không cho phép viết như thế.

Trần Hoàn viết 17:12 ngày 01/10/2018

Nói thêm, không liên quan gì đến public. Đối với phương thức nội tại của chính đối tượng đang gọi phương thức đó thì không có gì là không public.

Trần Linh viết 17:10 ngày 01/10/2018

Những cái gì cần nói thì bác @Duong_Act đã nói rồi, nhưng thường thì người ta sẽ viết theo case 3, chứ viết như case 1 sẽ rất hack não và nhiều khi code chạy sai thì cũng rất khó để lần ra lỗi! Khi viết các đoạn mã cú pháp nên bỏ trong các khổi xử lý như void, get, set,…

class [Tên Class]{
    [public/private/protected/...] [static nếu đó là 1 phương thức tĩnh]  [kiểu dữ liệu void, int, ...]( [Tham số] ){
        //phương thức....
    }
}
Trần Hoàn viết 17:10 ngày 01/10/2018

Thực ra người ta phải viết cả 2, vì khi tạo một đối tượng thường phải khởi tạo giá trị cho tất cả các biến, case1 được sử dụng thường xuyên. Chẳng qua thớt không dùng giá trị hằng nên bạn thấy nó dị thôi.

Trần Linh viết 17:08 ngày 01/10/2018

Nhưng mà em thấy thớt không gán giá trị mà gán phương thức vào nên ns vậy thôi

Aragami1408 viết 17:11 ngày 01/10/2018

#OFF-TOPIC

mak

Mong anh nói rõ ràng hơn. Em không biết từ “mak” nghĩ là gì cả!!!

Trần Linh viết 17:07 ngày 01/10/2018

mà :)) - do gõ quen rồi, xin lỗi nha :))

Bài liên quan
0