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 ạ.
Bài liên quan
Bạn cần show thêm class nhanvien để mình xem như nào nhé
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.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 ạ.
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ế.
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.
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,…
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.
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
#OFF-TOPIC
Mong anh nói rõ ràng hơn. Em không biết từ “mak” nghĩ là gì cả!!!
mà :)) - do gõ quen rồi, xin lỗi nha :))