Trang chủ
Bài viết mới
Diễn đàn
Bài mới trên hồ sơ
Hoạt động mới nhất
VIDEO
Mùa Tết
Văn Học Trẻ
Văn Học News
Media
New media
New comments
Search media
Đại Học
Đại cương
Chuyên ngành
Triết học
Kinh tế
KHXH & NV
Công nghệ thông tin
Khoa học kĩ thuật
Luận văn, tiểu luận
Phổ Thông
Lớp 12
Ngữ văn 12
Lớp 11
Ngữ văn 11
Lớp 10
Ngữ văn 10
LỚP 9
Ngữ văn 9
Lớp 8
Ngữ văn 8
Lớp 7
Ngữ văn 7
Lớp 6
Ngữ văn 6
Tiểu học
Thành viên
Thành viên trực tuyến
Bài mới trên hồ sơ
Tìm trong hồ sơ cá nhân
Credits
Transactions
Xu: 0
Đăng nhập
Đăng ký
Có gì mới?
Tìm kiếm
Tìm kiếm
Chỉ tìm trong tiêu đề
Bởi:
Hoạt động mới nhất
Đăng ký
Menu
Đăng nhập
Đăng ký
Install the app
Cài đặt
Chào mừng Bạn tham gia Diễn Đàn VNKienThuc.com -
Định hướng Forum
Kiến Thức
- HÃY TẠO CHỦ ĐỀ KIẾN THỨC HỮU ÍCH VÀ CÙNG NHAU THẢO LUẬN Kết nối:
VNK X
-
VNK groups
| Nhà Tài Trợ:
BhnongFood X
-
Bhnong groups
-
Đặt mua Bánh Bhnong
CÔNG NGHỆ
Công Nghệ Thông Tin
Code
Tìm hiểu về lớp trong C#
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Trả lời chủ đề
Nội dung
<blockquote data-quote="uocmo_kchodoi" data-source="post: 177533" data-attributes="member: 165510"><p style="text-align: center"><strong><span style="color: #ff0000">CLASS TRONG C#</span></strong></p> <p style="text-align: center"><strong><span style="color: #ff0000"></span></strong></p><p><strong>Khái niệm: </strong>Class trong C# chính là cách thể hiện khái niệm về lớp trong lập trình hướng đối tượng. Một lớp là một khái niệm mô tả cho những thực thể có chung tính chất và hành vi. Lớp định nghĩa những thuộc tính và hành vi được dùng cho những đối tượng của lớp đó. Do đó có thể nói lớp là một khuôn mẫu cho các đối tượng.</p><p></p><p>Class trong C# thực chất là một kiểu dữ liệu mới do người dùng tự định nghĩa.</p><p></p><p>Một class trong C# có các thành phần như:</p><ul> <li data-xf-list-type="ul">Thuộc tính: là các thành phần dữ liệu hay còn gọi là các biến.</li> <li data-xf-list-type="ul">Phương thức: là các hàm thành phần thể hiện các hành vi của một đối tượng thuộc lớp.</li> <li data-xf-list-type="ul">Phương thức khởi tạo.</li> <li data-xf-list-type="ul">Phương thức huỷ bỏ.</li> </ul><p><span style="font-size: 18px"><span style="color: #0000ff"><strong>1. Định nghĩa một Class trong C#</strong></span></span></p><p><span style="font-size: 18px"></span></p><p>Một định nghĩa lớp trong C# bắt đầu với từ khóa class được theo sau bởi tên lớp; và phần thân lớp được bao quanh bởi các dấu ngoặc ôm. Dưới đây là form chung của một định nghĩa lớp trong C#:</p><p></p><p><access specifier> class tên_lớp</p><p>{</p><p> // các biến thành viên</p><p> <access specifier> <kiểu_dữ_liệu> biến1;</p><p> <access specifier> <kiểu_dữ_liệu> biến2;</p><p> ...</p><p> <access specifier> <kiểu_dữ_liệu> biếnN;</p><p> </p><p> // các phương thức thành viên</p><p> <access specifier> <kiểu_trả_về> tên_phương_thức1(danh_sách_tham_số)</p><p> {</p><p> // phần thân phương thức</p><p> }</p><p> <access specifier> <kiểu_trả_về> tên_phương_thức2(danh_sách_tham_số)</p><p> {</p><p> // phần thân phương thức</p><p> }</p><p> ...</p><p> <access specifier> <kiểu_trả_về> tên_phương_thứcN(danh_sách_tham_số)</p><p> {</p><p> // phần thân phương thức</p><p> }</p><p>}</p><p>Lưu ý:</p><ul> <li data-xf-list-type="ul">Access specifier xác định các qui tắc truy cập cho các thành viên cũng như chính lớp đó. Nếu không được đề cập, thì Access Specifier mặc định cho một kiểu lớp là internal. Chế độ truy cập mặc định cho các thành viên là private.<br /> <br /> </li> <li data-xf-list-type="ul">kiểu_dữ_liệu xác định kiểu biến, và trả về kiểu dữ liệu mà phương thức trả về.<br /> <br /> </li> <li data-xf-list-type="ul">Để truy cập các thành viên lớp, bạn sử dụng toán tử dot (.).<br /> <br /> </li> <li data-xf-list-type="ul">Toán tử dot (.) liên kết với tên của một đối tượng với tên của một thành viên.</li> </ul><p>Ví dụ sau minh họa các khái niệm về lớp trong C# được đề cập ở trên: tạo hai class có tên lần lượt là Box và TestCsharp trong hai file riêng biệt.</p><p></p><p>Lớp Box: chứa các thuộc tính của một hộp</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> class Box</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> public double chieu_dai; </span></em></p><p><em><span style="color: #5900b3"> public double chieu_rong; </span></em></p><p><em><span style="color: #5900b3"> public double chieu_cao; </span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p><span style="color: #000000">Lớp TestCsharp: chứa phương thức main() để thao tác trên đối tượng Box</span></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> public class TestCsharp</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> public static void Main(string[] args)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Class trong C#");</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("------------------------\n");</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> Box Box1 = new Box(); // tao doi tuong Box1</span></em></p><p><em><span style="color: #5900b3"> Box Box2 = new Box(); // tao doi tuong Box2</span></em></p><p><em><span style="color: #5900b3"> double the_tich = 0.0; // the tich cua box</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> // thong tin cua box1</span></em></p><p><em><span style="color: #5900b3"> Box1.chieu_cao = 5.0;</span></em></p><p><em><span style="color: #5900b3"> Box1.chieu_dai = 6.0;</span></em></p><p><em><span style="color: #5900b3"> Box1.chieu_rong = 7.0;</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> // thong tin cua box2</span></em></p><p><em><span style="color: #5900b3"> Box2.chieu_cao = 10.0;</span></em></p><p><em><span style="color: #5900b3"> Box2.chieu_dai = 12.0;</span></em></p><p><em><span style="color: #5900b3"> Box2.chieu_rong = 13.0;</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> // Tinh va in the tich cua box1</span></em></p><p><em><span style="color: #5900b3"> the_tich = Box1.chieu_cao * Box1.chieu_dai * Box1.chieu_rong;</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("The tich cua Box1 la: {0}", the_tich);</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> // Tinh va in the tich cua box2</span></em></p><p><em><span style="color: #5900b3"> the_tich = Box2.chieu_cao * Box2.chieu_dai * Box2.chieu_rong;</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("The tich cua Box2 la: {0}", the_tich);</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> Console.ReadKey();</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p>Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.</p><p></p><p>Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:</p><p></p><p style="text-align: center"><img src="https://vietjack.com/csharp/images/class.PNG" alt="" class="fr-fic fr-dii fr-draggable " data-size="" style="" /></p><p><span style="font-size: 18px"><span style="color: #0000ff"></span></span></p><p><span style="font-size: 18px"><span style="color: #0000ff"><strong>2. Hàm thành viên và tính đóng gói trong C#</strong></span></span></p><p><span style="font-size: 18px"><span style="color: #0000ff"></span></span></p><p>Một hàm thành viên trong C# của một lớp là một hàm mà có định nghĩa và nguyên mẫu (prototype) của nó bên trong định nghĩa lớp tương tự như bất kỳ biến nào khác. Nó hoạt động trên bất kỳ đối tượng nào của lớp mà nó là thành viên và có truy cập tới tất cả thành viên của một lớp cho đối tượng đó.</p><p></p><p>Các biến thành viên là các thuộc tính của một đối tượng (từ bối cảnh thiết kế) và chúng được giữ private để triển khai tính đóng gói. Những biến này chỉ có thể được truy cập bởi sử dụng các hàm thành viên public.</p><p></p><p>Ví dụ sau minh họa cách sử dụng các khái niệm trên để thiết lập và lấy giá trị của các thành viên khác nhau trong một lớp: tạo hai lớp có tên lần lượt là Box và TestCsharp trong hai file riêng biệt.</p><p></p><p>Lớp Box: chứa các thuộc tính và phương thức thành viên</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> class Box</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> private double chieu_dai; </span></em></p><p><em><span style="color: #5900b3"> private double chieu_rong; </span></em></p><p><em><span style="color: #5900b3"> private double chieu_cao; </span></em></p><p><em><span style="color: #5900b3"> public void setChieuDai(double len)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> chieu_dai = len;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> public void setChieuRong(double bre)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> chieu_rong = bre;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> public void setChieuCao(double hei)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> chieu_cao = hei;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> public double tinhTheTich()</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> return chieu_dai * chieu_rong * chieu_cao;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p><span style="color: #000000">Lớp TestCsharp: chứa phương thức main() để thao tác trên đối tượng Box</span></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> public class TestCsharp</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> public static void Main(string[] args)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Class trong C#");</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("------------------------\n");</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> Box Box1 = new Box(); // tao doi tuong Box1</span></em></p><p><em><span style="color: #5900b3"> Box Box2 = new Box(); // tao doi tuong Box2</span></em></p><p><em><span style="color: #5900b3"> double the_tich;</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> // nhap thong tin cho Box1</span></em></p><p><em><span style="color: #5900b3"> Box1.setChieuDai(6.0);</span></em></p><p><em><span style="color: #5900b3"> Box1.setChieuRong(7.0);</span></em></p><p><em><span style="color: #5900b3"> Box1.setChieuCao(5.0);</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> // nhap thong tin cho Box2</span></em></p><p><em><span style="color: #5900b3"> Box2.setChieuDai(12.0);</span></em></p><p><em><span style="color: #5900b3"> Box2.setChieuRong(13.0);</span></em></p><p><em><span style="color: #5900b3"> Box2.setChieuCao(10.0);</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> // tinh va in the tich Box1</span></em></p><p><em><span style="color: #5900b3"> the_tich = Box1.tinhTheTich();</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("The tich Box1 la: {0}", the_tich);</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> // tinh va in the tich Box2</span></em></p><p><em><span style="color: #5900b3"> the_tich = Box2.tinhTheTich();</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("The tich Box2 la: {0}", the_tich);</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> Console.ReadKey();</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p>Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.</p><p></p><p>Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:</p><p></p><p><img src="https://vietjack.com/csharp/images/class.PNG" alt="" class="fr-fic fr-dii fr-draggable " data-size="" style="" /></p><p></p><p><span style="font-size: 18px"><span style="color: #0000ff"><strong>3. Constructor trong C#</strong></span></span></p><p><span style="font-size: 18px"><span style="color: #0000ff"></span></span></p><p>Một constructor của một Class, là một hàm thành viên đặc biệt của một lớp, được thực thi bất cứ khi nào chúng ta tạo các đối tượng mới của lớp đó.</p><p></p><p>Một constructor có tên giống như tên lớp và nó không có bất kỳ kiểu trả về nào. Dưới đây là ví dụ minh họa khái niệm constructor trong C#:</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> class Line</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> private double chieu_dai; </span></em></p><p><em><span style="color: #5900b3"> public Line()</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Doi tuong dang duoc tao");</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> public void setChieuDai(double len)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> chieu_dai = len;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> public double getChieuDai()</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> return chieu_dai;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> static void Main(string[] args)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Constructor trong C#");</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("---------------------");</span></em></p><p><em><span style="color: #5900b3"> //tao doi tuong Line bang constructor</span></em></p><p><em><span style="color: #5900b3"> Line line = new Line();</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> // thiet lap chieu dai cho duong</span></em></p><p><em><span style="color: #5900b3"> line.setChieuDai(6.0);</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Chieu dai cua duong la: {0}", line.getChieuDai());</span></em></p><p><em><span style="color: #5900b3"> Console.ReadKey();</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p>Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:</p><p></p><p style="text-align: center"><img src="https://vietjack.com/csharp/images/constructor.PNG" alt="" class="fr-fic fr-dii fr-draggable " data-size="" style="" /></p> <p style="text-align: center"></p><p>Một constructor mặc định trong C# không có bất kỳ tham số nào, nhưng nếu bạn cần, một constructor có thể có tham số. Những constructor này được gọi là constructor được tham số hóa. Kỹ thuật này giúp bạn gán giá trị khởi đầu cho một đối tượng tại thời điểm tạo ra nó, như trong ví dụ sau:</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> class Line</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> private double chieu_dai;</span></em></p><p><em><span style="color: #5900b3"> public Line(double len) //constructor co tham so</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Doi tuong dang duoc tao, chieu dai = {0}", len);</span></em></p><p><em><span style="color: #5900b3"> chieu_dai = len;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> public void setChieuDai(double len)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> chieu_dai = len;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> public double getChieuDai()</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> return chieu_dai;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> static void Main(string[] args)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Constructor trong C#");</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("---------------------");</span></em></p><p><em><span style="color: #5900b3"> //tao doi tuong Line bang constructor</span></em></p><p><em><span style="color: #5900b3"> Line line = new Line(10.0);</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Chieu dai cua duong la: {0}", line.getChieuDai());</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> // thiet lap chieu dai cho duong</span></em></p><p><em><span style="color: #5900b3"> line.setChieuDai(6.0);</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Chieu dai cua duong la: {0}", line.getChieuDai());</span></em></p><p><em><span style="color: #5900b3"> Console.ReadKey();</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p>Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:</p><p></p><p style="text-align: center"><img src="https://vietjack.com/csharp/images/constructor-1.PNG" alt="" class="fr-fic fr-dii fr-draggable " data-size="" style="" /></p><p><span style="font-size: 18px"></span></p><p><span style="font-size: 18px"><span style="color: #0000ff"><strong>4. Destructor trong C#</strong></span></span></p><p><span style="font-size: 18px"><span style="color: #0000ff"></span></span></p><p>Một destructor trong C#, là một hàm thành viên đặc biệt của một lớp, được thực thi bất cứ khi nào một đối tượng của lớp đó thoát ra khởi phạm vi. Một destructor có tên giống tên lớp với một dẫu ngã (~) ở trước và nó có thể: không trả về một giá trị hoặc không nhận bất kỳ tham số nào.</p><p></p><p>Destructor trong C# có thể rất hữu ích để giải phóng tài nguyên bộ nhớ trước khi thoát khỏi chương trình. Destructor không thể bị kế thừa hoặc nạp chồng.</p><p></p><p>Ví dụ sau minh họa khái niệm về destructor trong C#:</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> class Line</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> private double chieu_dai;</span></em></p><p><em><span style="color: #5900b3"> public Line() //constructor</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Doi tuong dang duoc tao.");</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> ~Line() // destructor</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Doi tuong dang bi xoa!!!");</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> public void setChieuDai(double len)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> chieu_dai = len;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> public double getChieuDai()</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> return chieu_dai;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> static void Main(string[] args)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Constructor trong C#");</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("---------------------");</span></em></p><p><em><span style="color: #5900b3"> //tao doi tuong Line bang constructor</span></em></p><p><em><span style="color: #5900b3"> Line line = new Line();</span></em></p><p><em><span style="color: #5900b3"> // thiet lap chieu dai cho duong</span></em></p><p><em><span style="color: #5900b3"> line.setChieuDai(6.0);</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Chieu dai cua duong la: {0}", line.getChieuDai());</span></em></p><p><em><span style="color: #5900b3"> Console.ReadKey();</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p>Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:</p><p></p><p style="text-align: center"><img src="https://vietjack.com/csharp/images/destructor.PNG" alt="" class="fr-fic fr-dii fr-draggable " data-size="" style="" /></p><p><span style="font-size: 18px"></span></p><p><span style="font-size: 18px"><span style="color: #0000ff"><strong>5. Thành viên Static của một Class trong C#</strong></span></span></p><p><span style="font-size: 18px"></span></p><p>Chúng ta có thể định nghĩa các thành viên lớp là static bởi sử dụng từ khóa static trong C#. Khi chúng ta khai báo một thành viên lớp là static, nghĩa là, dù cho có bao nhiêu đối tượng của lớp được tạo, thì chỉ có một bản sao của thành viên static.</p><p></p><p>Từ khóa static ngụ ý rằng chỉ có một instance (sự thể hiện) của thành viên tồn tại cho một lớp đó. Các biến static được sử dụng để định nghĩa các hằng số (constant) bởi vì giá trị của chúng có thể được thu nhận bằng việc gọi lớp đó mà không cần tạo một instance của nó. Các biến static có thể được khởi tạo bên ngoài hàm thành viên hoặc định nghĩa lớp. Bạn cũng có thể khởi tạo các biến static bên trong định nghĩa lớp.</p><p></p><p>Ví dụ sau minh họa cách sử dụng của các biến static trong C#: tạo hai class có tên lần lượt làThanhVienStatic và TestCsharp như sau:</p><p></p><p>Lớp ThanhVienStatic: chứa thành viên static và các phương thức</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> class ThanhVienStatic</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> public static int num; //thanh vien static</span></em></p><p><em><span style="color: #5900b3"> public void count()</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> num++;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> public int getNum()</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> return num;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p>Lớp TestCsharp: chứa phương thức main() để thao tác trên đối tượng ThanhVienStatic này</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> public class TestCsharp</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> public static void Main(string[] args)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Thanh vien Static trong C#");</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("------------------------\n");</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> //tao cac doi tuong ThanhVienStatic</span></em></p><p><em><span style="color: #5900b3"> ThanhVienStatic s1 = new ThanhVienStatic();</span></em></p><p><em><span style="color: #5900b3"> ThanhVienStatic s2 = new ThanhVienStatic();</span></em></p><p><em><span style="color: #5900b3"> //goi phuong thuc count()</span></em></p><p><em><span style="color: #5900b3"> s1.count();</span></em></p><p><em><span style="color: #5900b3"> s1.count();</span></em></p><p><em><span style="color: #5900b3"> s1.count();</span></em></p><p><em><span style="color: #5900b3"> s2.count();</span></em></p><p><em><span style="color: #5900b3"> s2.count();</span></em></p><p><em><span style="color: #5900b3"> s2.count();</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Gia tri bien num cho doi tuong s1 la: {0}", s1.getNum());</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Gia tri bien num cho doi tuong s2 la: {0}", s2.getNum());</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> Console.ReadKey();</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p></p><p>Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:</p><p></p><p style="text-align: center"><img src="https://vietjack.com/csharp/images/thanh-vien-static.PNG" alt="" class="fr-fic fr-dii fr-draggable " data-size="" style="" /></p> <p style="text-align: center"></p><p>Bạn cũng có thể khai báo một hàm thành viên là static. Những hàm này chỉ có thể truy cập các biến static. Hàm static có thể tồn tại trước cả khi đối tượng được tạo. Ví dụ sau minh họa cách sử dụng của hàm static trong C#: ở trên bạn đã tạo hai lớp này rồi, bây giờ chỉ cần thay đổi phần code của hai lớp một chút như sau:</p><p></p><p>Lớp ThanhVienStatic: chứa thành viên static và các phương thức static</p><p></p><p><span style="color: #5900b3"><em>using System;</em></span></p><p><span style="color: #5900b3"><em>namespace VietJackCsharp</em></span></p><p><span style="color: #5900b3"><em>{</em></span></p><p><span style="color: #5900b3"><em> class ThanhVienStatic</em></span></p><p><span style="color: #5900b3"><em> {</em></span></p><p><span style="color: #5900b3"><em> public static int num; // thanh vien static</em></span></p><p><span style="color: #5900b3"><em> public void count()</em></span></p><p><span style="color: #5900b3"><em> {</em></span></p><p><span style="color: #5900b3"><em> num++;</em></span></p><p><span style="color: #5900b3"><em> }</em></span></p><p><span style="color: #5900b3"><em> //phuong thuc static</em></span></p><p><span style="color: #5900b3"><em> public static int getNum()</em></span></p><p><span style="color: #5900b3"><em> {</em></span></p><p><span style="color: #5900b3"><em> return num;</em></span></p><p><span style="color: #5900b3"><em> }</em></span></p><p><span style="color: #5900b3"><em> }</em></span></p><p><span style="color: #5900b3"><em>}</em></span></p><p>Lớp TestCsharp: chứa phương thức main() để thao tác trên đối tượng ThanhVienStatic này</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> public class TestCsharp</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> public static void Main(string[] args)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Phuong thuc Static trong C#");</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("------------------------\n");</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> //tao cac doi tuong ThanhVienStatic</span></em></p><p><em><span style="color: #5900b3"> ThanhVienStatic s = new ThanhVienStatic();</span></em></p><p><em><span style="color: #5900b3"> //goi phuong thuc</span></em></p><p><em><span style="color: #5900b3"> s.count();</span></em></p><p><em><span style="color: #5900b3"> s.count();</span></em></p><p><em><span style="color: #5900b3"> s.count();</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Gia tri cua num: {0}", ThanhVienStatic.getNum());</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> Console.ReadKey();</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p></p><p>Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:</p><p></p><p style="text-align: center"><img src="https://vietjack.com/csharp/images/phuong-thuc-static.PNG" alt="" class="fr-fic fr-dii fr-draggable " data-size="" style="" /></p> <p style="text-align: center"></p> <p style="text-align: right">Nguồn: vietjack.com</p></blockquote><p></p>
[QUOTE="uocmo_kchodoi, post: 177533, member: 165510"] [CENTER][B][COLOR=#ff0000]CLASS TRONG C# [/COLOR][/B][/CENTER] [B]Khái niệm: [/B]Class trong C# chính là cách thể hiện khái niệm về lớp trong lập trình hướng đối tượng. Một lớp là một khái niệm mô tả cho những thực thể có chung tính chất và hành vi. Lớp định nghĩa những thuộc tính và hành vi được dùng cho những đối tượng của lớp đó. Do đó có thể nói lớp là một khuôn mẫu cho các đối tượng. Class trong C# thực chất là một kiểu dữ liệu mới do người dùng tự định nghĩa. Một class trong C# có các thành phần như: [LIST] [*]Thuộc tính: là các thành phần dữ liệu hay còn gọi là các biến. [*]Phương thức: là các hàm thành phần thể hiện các hành vi của một đối tượng thuộc lớp. [*]Phương thức khởi tạo. [*]Phương thức huỷ bỏ. [/LIST] [SIZE=5][COLOR=#0000ff][B]1. Định nghĩa một Class trong C#[/B][/COLOR] [B][/B][/SIZE] Một định nghĩa lớp trong C# bắt đầu với từ khóa class được theo sau bởi tên lớp; và phần thân lớp được bao quanh bởi các dấu ngoặc ôm. Dưới đây là form chung của một định nghĩa lớp trong C#: <access specifier> class tên_lớp { // các biến thành viên <access specifier> <kiểu_dữ_liệu> biến1; <access specifier> <kiểu_dữ_liệu> biến2; ... <access specifier> <kiểu_dữ_liệu> biếnN; // các phương thức thành viên <access specifier> <kiểu_trả_về> tên_phương_thức1(danh_sách_tham_số) { // phần thân phương thức } <access specifier> <kiểu_trả_về> tên_phương_thức2(danh_sách_tham_số) { // phần thân phương thức } ... <access specifier> <kiểu_trả_về> tên_phương_thứcN(danh_sách_tham_số) { // phần thân phương thức } } Lưu ý: [LIST] [*]Access specifier xác định các qui tắc truy cập cho các thành viên cũng như chính lớp đó. Nếu không được đề cập, thì Access Specifier mặc định cho một kiểu lớp là internal. Chế độ truy cập mặc định cho các thành viên là private. [*]kiểu_dữ_liệu xác định kiểu biến, và trả về kiểu dữ liệu mà phương thức trả về. [*]Để truy cập các thành viên lớp, bạn sử dụng toán tử dot (.). [*]Toán tử dot (.) liên kết với tên của một đối tượng với tên của một thành viên. [/LIST] Ví dụ sau minh họa các khái niệm về lớp trong C# được đề cập ở trên: tạo hai class có tên lần lượt là Box và TestCsharp trong hai file riêng biệt. Lớp Box: chứa các thuộc tính của một hộp [I][COLOR=#5900b3]using System; namespace VietJackCsharp { class Box { public double chieu_dai; public double chieu_rong; public double chieu_cao; } }[/COLOR][/I] [COLOR=#000000]Lớp TestCsharp: chứa phương thức main() để thao tác trên đối tượng Box[/COLOR] [I][COLOR=#5900b3] using System; namespace VietJackCsharp { public class TestCsharp { public static void Main(string[] args) { Console.WriteLine("Class trong C#"); Console.WriteLine("------------------------\n"); Box Box1 = new Box(); // tao doi tuong Box1 Box Box2 = new Box(); // tao doi tuong Box2 double the_tich = 0.0; // the tich cua box // thong tin cua box1 Box1.chieu_cao = 5.0; Box1.chieu_dai = 6.0; Box1.chieu_rong = 7.0; // thong tin cua box2 Box2.chieu_cao = 10.0; Box2.chieu_dai = 12.0; Box2.chieu_rong = 13.0; // Tinh va in the tich cua box1 the_tich = Box1.chieu_cao * Box1.chieu_dai * Box1.chieu_rong; Console.WriteLine("The tich cua Box1 la: {0}", the_tich); // Tinh va in the tich cua box2 the_tich = Box2.chieu_cao * Box2.chieu_dai * Box2.chieu_rong; Console.WriteLine("The tich cua Box2 la: {0}", the_tich); Console.ReadKey(); } } }[/COLOR][/I] Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn. Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau: [CENTER][IMG]https://vietjack.com/csharp/images/class.PNG[/IMG][/CENTER] [SIZE=5][COLOR=#0000ff][B][/B] [B]2. Hàm thành viên và tính đóng gói trong C#[/B] [B][/B][/COLOR][/SIZE] Một hàm thành viên trong C# của một lớp là một hàm mà có định nghĩa và nguyên mẫu (prototype) của nó bên trong định nghĩa lớp tương tự như bất kỳ biến nào khác. Nó hoạt động trên bất kỳ đối tượng nào của lớp mà nó là thành viên và có truy cập tới tất cả thành viên của một lớp cho đối tượng đó. Các biến thành viên là các thuộc tính của một đối tượng (từ bối cảnh thiết kế) và chúng được giữ private để triển khai tính đóng gói. Những biến này chỉ có thể được truy cập bởi sử dụng các hàm thành viên public. Ví dụ sau minh họa cách sử dụng các khái niệm trên để thiết lập và lấy giá trị của các thành viên khác nhau trong một lớp: tạo hai lớp có tên lần lượt là Box và TestCsharp trong hai file riêng biệt. Lớp Box: chứa các thuộc tính và phương thức thành viên [I][COLOR=#5900b3]using System; namespace VietJackCsharp { class Box { private double chieu_dai; private double chieu_rong; private double chieu_cao; public void setChieuDai(double len) { chieu_dai = len; } public void setChieuRong(double bre) { chieu_rong = bre; } public void setChieuCao(double hei) { chieu_cao = hei; } public double tinhTheTich() { return chieu_dai * chieu_rong * chieu_cao; } } }[/COLOR][/I] [COLOR=#000000]Lớp TestCsharp: chứa phương thức main() để thao tác trên đối tượng Box[/COLOR] [I][COLOR=#5900b3] using System; namespace VietJackCsharp { public class TestCsharp { public static void Main(string[] args) { Console.WriteLine("Class trong C#"); Console.WriteLine("------------------------\n"); Box Box1 = new Box(); // tao doi tuong Box1 Box Box2 = new Box(); // tao doi tuong Box2 double the_tich; // nhap thong tin cho Box1 Box1.setChieuDai(6.0); Box1.setChieuRong(7.0); Box1.setChieuCao(5.0); // nhap thong tin cho Box2 Box2.setChieuDai(12.0); Box2.setChieuRong(13.0); Box2.setChieuCao(10.0); // tinh va in the tich Box1 the_tich = Box1.tinhTheTich(); Console.WriteLine("The tich Box1 la: {0}", the_tich); // tinh va in the tich Box2 the_tich = Box2.tinhTheTich(); Console.WriteLine("The tich Box2 la: {0}", the_tich); Console.ReadKey(); } } }[/COLOR][/I] Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn. Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau: [IMG]https://vietjack.com/csharp/images/class.PNG[/IMG] [SIZE=5][COLOR=#0000ff][B]3. Constructor trong C#[/B] [B][/B][/COLOR][/SIZE] Một constructor của một Class, là một hàm thành viên đặc biệt của một lớp, được thực thi bất cứ khi nào chúng ta tạo các đối tượng mới của lớp đó. Một constructor có tên giống như tên lớp và nó không có bất kỳ kiểu trả về nào. Dưới đây là ví dụ minh họa khái niệm constructor trong C#: [I][COLOR=#5900b3]using System; namespace VietJackCsharp { class Line { private double chieu_dai; public Line() { Console.WriteLine("Doi tuong dang duoc tao"); } public void setChieuDai(double len) { chieu_dai = len; } public double getChieuDai() { return chieu_dai; } static void Main(string[] args) { Console.WriteLine("Constructor trong C#"); Console.WriteLine("---------------------"); //tao doi tuong Line bang constructor Line line = new Line(); // thiet lap chieu dai cho duong line.setChieuDai(6.0); Console.WriteLine("Chieu dai cua duong la: {0}", line.getChieuDai()); Console.ReadKey(); } } }[/COLOR][/I] Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau: [CENTER][IMG]https://vietjack.com/csharp/images/constructor.PNG[/IMG] [/CENTER] Một constructor mặc định trong C# không có bất kỳ tham số nào, nhưng nếu bạn cần, một constructor có thể có tham số. Những constructor này được gọi là constructor được tham số hóa. Kỹ thuật này giúp bạn gán giá trị khởi đầu cho một đối tượng tại thời điểm tạo ra nó, như trong ví dụ sau: [I][COLOR=#5900b3]using System; namespace VietJackCsharp { class Line { private double chieu_dai; public Line(double len) //constructor co tham so { Console.WriteLine("Doi tuong dang duoc tao, chieu dai = {0}", len); chieu_dai = len; } public void setChieuDai(double len) { chieu_dai = len; } public double getChieuDai() { return chieu_dai; } static void Main(string[] args) { Console.WriteLine("Constructor trong C#"); Console.WriteLine("---------------------"); //tao doi tuong Line bang constructor Line line = new Line(10.0); Console.WriteLine("Chieu dai cua duong la: {0}", line.getChieuDai()); // thiet lap chieu dai cho duong line.setChieuDai(6.0); Console.WriteLine("Chieu dai cua duong la: {0}", line.getChieuDai()); Console.ReadKey(); } } }[/COLOR][/I] Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau: [CENTER][IMG]https://vietjack.com/csharp/images/constructor-1.PNG[/IMG][/CENTER] [SIZE=5][B][/B] [COLOR=#0000ff][B]4. Destructor trong C#[/B] [B][/B][/COLOR][/SIZE] Một destructor trong C#, là một hàm thành viên đặc biệt của một lớp, được thực thi bất cứ khi nào một đối tượng của lớp đó thoát ra khởi phạm vi. Một destructor có tên giống tên lớp với một dẫu ngã (~) ở trước và nó có thể: không trả về một giá trị hoặc không nhận bất kỳ tham số nào. Destructor trong C# có thể rất hữu ích để giải phóng tài nguyên bộ nhớ trước khi thoát khỏi chương trình. Destructor không thể bị kế thừa hoặc nạp chồng. Ví dụ sau minh họa khái niệm về destructor trong C#: [I][COLOR=#5900b3]using System; namespace VietJackCsharp { class Line { private double chieu_dai; public Line() //constructor { Console.WriteLine("Doi tuong dang duoc tao."); } ~Line() // destructor { Console.WriteLine("Doi tuong dang bi xoa!!!"); } public void setChieuDai(double len) { chieu_dai = len; } public double getChieuDai() { return chieu_dai; } static void Main(string[] args) { Console.WriteLine("Constructor trong C#"); Console.WriteLine("---------------------"); //tao doi tuong Line bang constructor Line line = new Line(); // thiet lap chieu dai cho duong line.setChieuDai(6.0); Console.WriteLine("Chieu dai cua duong la: {0}", line.getChieuDai()); Console.ReadKey(); } } }[/COLOR][/I] Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau: [CENTER][IMG]https://vietjack.com/csharp/images/destructor.PNG[/IMG][/CENTER] [SIZE=5][B][/B] [COLOR=#0000ff][B]5. Thành viên Static của một Class trong C#[/B][/COLOR] [B][/B][/SIZE] Chúng ta có thể định nghĩa các thành viên lớp là static bởi sử dụng từ khóa static trong C#. Khi chúng ta khai báo một thành viên lớp là static, nghĩa là, dù cho có bao nhiêu đối tượng của lớp được tạo, thì chỉ có một bản sao của thành viên static. Từ khóa static ngụ ý rằng chỉ có một instance (sự thể hiện) của thành viên tồn tại cho một lớp đó. Các biến static được sử dụng để định nghĩa các hằng số (constant) bởi vì giá trị của chúng có thể được thu nhận bằng việc gọi lớp đó mà không cần tạo một instance của nó. Các biến static có thể được khởi tạo bên ngoài hàm thành viên hoặc định nghĩa lớp. Bạn cũng có thể khởi tạo các biến static bên trong định nghĩa lớp. Ví dụ sau minh họa cách sử dụng của các biến static trong C#: tạo hai class có tên lần lượt làThanhVienStatic và TestCsharp như sau: Lớp ThanhVienStatic: chứa thành viên static và các phương thức [I][COLOR=#5900b3]using System; namespace VietJackCsharp { class ThanhVienStatic { public static int num; //thanh vien static public void count() { num++; } public int getNum() { return num; } } }[/COLOR][/I] Lớp TestCsharp: chứa phương thức main() để thao tác trên đối tượng ThanhVienStatic này [I][COLOR=#5900b3]using System; namespace VietJackCsharp { public class TestCsharp { public static void Main(string[] args) { Console.WriteLine("Thanh vien Static trong C#"); Console.WriteLine("------------------------\n"); //tao cac doi tuong ThanhVienStatic ThanhVienStatic s1 = new ThanhVienStatic(); ThanhVienStatic s2 = new ThanhVienStatic(); //goi phuong thuc count() s1.count(); s1.count(); s1.count(); s2.count(); s2.count(); s2.count(); Console.WriteLine("Gia tri bien num cho doi tuong s1 la: {0}", s1.getNum()); Console.WriteLine("Gia tri bien num cho doi tuong s2 la: {0}", s2.getNum()); Console.ReadKey(); } } }[/COLOR][/I] Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau: [CENTER][IMG]https://vietjack.com/csharp/images/thanh-vien-static.PNG[/IMG] [/CENTER] Bạn cũng có thể khai báo một hàm thành viên là static. Những hàm này chỉ có thể truy cập các biến static. Hàm static có thể tồn tại trước cả khi đối tượng được tạo. Ví dụ sau minh họa cách sử dụng của hàm static trong C#: ở trên bạn đã tạo hai lớp này rồi, bây giờ chỉ cần thay đổi phần code của hai lớp một chút như sau: Lớp ThanhVienStatic: chứa thành viên static và các phương thức static [COLOR=#5900b3][I]using System;[/I] [I]namespace VietJackCsharp[/I] [I]{[/I] [I] class ThanhVienStatic[/I] [I] {[/I] [I] public static int num; // thanh vien static[/I] [I] public void count()[/I] [I] {[/I] [I] num++;[/I] [I] }[/I] [I] //phuong thuc static[/I] [I] public static int getNum()[/I] [I] {[/I] [I] return num;[/I] [I] }[/I] [I] }[/I] [I]}[/I][/COLOR] Lớp TestCsharp: chứa phương thức main() để thao tác trên đối tượng ThanhVienStatic này [I][COLOR=#5900b3]using System; namespace VietJackCsharp { public class TestCsharp { public static void Main(string[] args) { Console.WriteLine("Phuong thuc Static trong C#"); Console.WriteLine("------------------------\n"); //tao cac doi tuong ThanhVienStatic ThanhVienStatic s = new ThanhVienStatic(); //goi phuong thuc s.count(); s.count(); s.count(); Console.WriteLine("Gia tri cua num: {0}", ThanhVienStatic.getNum()); Console.ReadKey(); } } }[/COLOR][/I] Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau: [CENTER][IMG]https://vietjack.com/csharp/images/phuong-thuc-static.PNG[/IMG] [/CENTER] [RIGHT]Nguồn: vietjack.com[/RIGHT] [/QUOTE]
Tên
Mã xác nhận
Gửi trả lời
CÔNG NGHỆ
Công Nghệ Thông Tin
Code
Tìm hiểu về lớp trong C#
Top