1. Trang chủ
  2. » Công Nghệ Thông Tin

Tính năng nâng cao trong C#

18 320 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 18
Dung lượng 63,26 KB

Nội dung

Advanced C# Language Features Các tính năng nâng cao của C# Indexer Chỉ số Không có indexer  Giả sử ta có 1 đối tượng danh sách lớp, trong đối tượng có chứa danh sách các sinh viên trong 1 lớp  Nếu muốn truy cập đến từng sinh viên trong danh sách, ta phải viết 1 hàm trả về 1 sinh viên và 1 hàm thay đổi giá trị của sinh viên đó class DanhSachLop { List<SinhVien> danhsach; public SinhVien GetSinhVien(int index) { return danhsach[index]; } public void SetSinhVien(int index, SinhVien sv) { danhsach[index] = sv; } } Indexer  C# cung cấp tính năng indexer giúp đơn giản hóa việc truy cập đến 1 sinh viên trong danh sách lớp nói trên. Việc truy cập này tương tự với việc truy cập đến các kí tự trong 1 xâu class DanhSachLop { List<SinhVien> danhsach; public SinhVien this[int index] { get { return danhsach[index]; } set { danhsach[index] = value; } } } Indexer static void Main() { DanhSachLop a = new DanhSachLop(); int i = 0; // Lệnh xử lí Console.WriteLine(a[i].Name); // } Indexer  Ngoài kiểu tham số là int, ta có thể khai báo tham số có kiểu tùy ý, số lượng tùy ý class DanhSachLop { List<SinhVien> danhsach; public SinhVien this[string name] { get { } set { } } } Operator Overloading Quá tải toán tử Quá tải toán tử C# cho phép ta quá tải các toán tử:  Các toán tử 1 ngôi: !, ++, …  Các toán tử 2 ngôi: +, -, *, /, %, ^, &, |, >>, <<  Các toán tử logic: >, <, >=, <=, ==, != Các toán tử +=, -=, *=,… không được phép quá tải, nó sẽ lấy giá trị quá tải của các phép toán tương ứng Cú pháp: public static <kiểu trả về> operator <phép toán>(danh sách số hạng) VD: public static PhanSo operator +(PhanSo a, PhanSo b) Ví dụ class PhanSo { int tu, mau; public static PhanSo operator*(PhanSo a, PhanSo b) { return new PhanSo(a.tu * b.tu, a.mau * b.mau); } public void InPhanSo() { Console.WriteLine("{0}/{1}", tu, mau); } public PhanSo(int tu, int mau) { this.tu = tu; this.mau = mau; } } Ví dụ static void Main(string[] args) { PhanSo a = new PhanSo(1, 2); PhanSo b = new PhanSo(3, 4); PhanSo c = a * b; c.InPhanSo(); } Kết quả 3/8 [...]... ý return (a.tu == b.tu) && (a.mau == b.mau); } public static bool operator !=(PhanSo a, PhanSo b) { return (a.tu != b.tu) || (a.mau != b.mau); } Type conversions Chuyển đổi kiểu dữ liệu  C# cung cấp cho ta tính năng định nghĩa việc chuyển đổi kiểu dữ liệu này sang kiểu dữ liệu khác  Có 2 loại chuyển đổi kiểu Chuyển đổi kiểu dữ liệu  Ngầm định: implicit  Tường minh: explicit  Ngầm định: giống như... 0.5 int i = (int)b; // i = 3 } Anonymous Types Kiểu dữ liệu ẩn danh  C# cho phép ta đóng gói các dữ liệu chỉ đọc (readonly) vào 1 đối tượng mà không cần khai báo kiểu dữ liệu trước static void Main(string[] args) Anonymous Types { var a = new { ID = 1, Name = "Linh" }; Console.WriteLine("{0} {1}", a.ID, a.Name); }  Thường sử dụng trong các truy vấn LINQ  Ta không thể điều khiển được tên của kiểu ẩn... Console.WriteLine("{0} {1}", a.ID, a.Name); }  Thường sử dụng trong các truy vấn LINQ  Ta không thể điều khiển được tên của kiểu ẩn danh  Kiểu ẩn danh luôn kế thừa từ lớp System.Object  Các trường và thuộc tính trong kiểu ẩn danh luôn là chỉ đọc Chú ý  Kiểu ẩn danh không có các event, phương thức, toán tử, phương thức ghi đè  Ta không thể kế thừa từ 1 kiểu ẩn danh  Kiểu ẩn danh luôn được khởi tạo bằng hàm . Advanced C# Language Features Các tính năng nâng cao của C# Indexer Chỉ số Không có indexer  Giả sử ta có 1 đối tượng danh sách lớp, trong đối tượng có chứa danh sách các sinh viên trong 1 lớp  Nếu. } Indexer  C# cung cấp tính năng indexer giúp đơn giản hóa việc truy cập đến 1 sinh viên trong danh sách lớp nói trên. Việc truy cập này tương tự với việc truy cập đến các kí tự trong 1 xâu class. (a.mau != b.mau); } Type conversions Chuyển đổi kiểu dữ liệu Chuyển đổi kiểu dữ liệu  C# cung cấp cho ta tính năng định nghĩa việc chuyển đổi kiểu dữ liệu này sang kiểu dữ liệu khác  Có 2 loại

Ngày đăng: 18/04/2014, 16:25

TỪ KHÓA LIÊN QUAN