Các Chủ Đề Tiến Bộ trong C# part 6
Số trang: 4
Loại file: pdf
Dung lượng: 101.17 KB
Lượt xem: 21
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Attribute 1 attribute là 1 thứ dùng để đánh dấu (marker) mà được ứng dụng đến 1 phương thức hay 1 lớp thậm chí là 1 đối số riêng trong 1 phưong thức ,cung cấp thông tin thêm về mục đó.
Nội dung trích xuất từ tài liệu:
Các Chủ Đề Tiến Bộ trong C# part 6Attribute1 attribute là 1 thứ dùng để đánh dấu (marker) mà được ứng dụng đến 1 phương thức hay1 lớp thậm chí là 1 đối số riêng trong 1 phưong thức ,cung cấp thông tin thêm về mục đó.ví dụ attribute Conditional có thể được dùng để đánh dấu 1 phương thức như là 1 phươngthức debug như sau :[Conditional(DEBUG)]public void DoSomeDebugStuff(){// do something}Để áp dụng 1 attribute đến 1 mục ta cung cấp tên của attribute trong ngoặc vuông ngaytrước định nghĩa mục. các attribute lấy vài thông số - những thông số này cung cấp bêntrong dấu ngoặc theo sau tên attributeỞ cấp độ cơ bản nhất của nó , ứng dụng 1 attribute vào 1 mục có thể đơn giản chỉ làthông tin thêm về mục đó đựợc bỏ trong assembly đuợc biên dịch dùng cho mục đíchhướng dẫn thêm. 1 số attribute được định nghĩa trong các lớp cơ sở đuợc nhận ra bởitrình biên dịch C#.mà từ đó trình biên dịch có thể gây ra những tác động trên mã . ví dụtrên trình biên dịch sẽ biên dịch mã của mục Conditional chỉ nếu biểu tượng DEBUG đãđược định nghĩa trước.Trong phần này ta sẽ xem xét 3 attribute sau : - Conditional : có thể đánh dấu bất kì phương thức với attribute Conditional . sẽ ngănngừa trình biên dịch từ việc biên dịch phương thức đó hay bất kì câu lệnh mà tham khảođến nó nếu tên biểu tượng không được định nghĩa. điều này có thể được dùng cho điềukiện biên dịch . - Dllimport - đôi khi ta cần truy nhập đến các Window API cơ bản hoặc các hàm kiểucũ khác mà được thực thi trong các window DLLs.attribute Dllimport dùng cho mục đíchnày . nó được dùng đánh dấu 1 phương thức được định nfghĩa trong Dll bên ngoài. - Obsolete - attribute này được dùng để đánh dấu 1 phương thức được xem nhưobsolete ( không dùng nữa) . tuỳ thuộc vào việc thiết lập trên attribute này , trình biêndịch sẽ sinh ra 1 cảnh báo hay lỗi nếu nó gặp bất kì mã nào cố gắng dùng phương thứcnày.Ta xem xét các attribute này thông qua ví dụ Attributes . trình bày 1 message box dùnghàm Window API ,MessageBox , và cũng trình bày 2 thông điệp vá lỗi. 1 trong nhữngthông điệp này được gọi trung gian qua 1 phương thức obsolete#define DEBUG // comment out this line if doing a release buildusing System;using System.Runtime.InteropServices;using System.Diagnostics;namespace Wrox.ProCSharp.AdvancedCSharp{ class MainEntryPoint { [DllImport(User32.dll)] public static extern int MessageBox(int hParent, string Message, string Caption, int Type); static void Main() { DisplayRunningMessage(); DisplayDebugMessage(); MessageBox(0, Hello, Message, 0); } [Conditional(DEBUG)] private static void DisplayRunningMessage() { Console.WriteLine(Starting Main routine. Current time is + DateTime.Now); } [Conditional(DEBUG)] [Obsolete()] private static void DisplayDebugMessage() { Console.WriteLine(Starting Main routine); } }}Đầu tiên ta chỉ định một số namespace - DllImport nằm trong namespace System.Runtime.InteropServices - Conditional nằm trong namespace System.Diagnostics .Bên trong phương thức ta định nghĩa phương thức mà ta gọi từ dll bên ngoài .hàm APIMessageBox() đuợc định nghĩa trong User32.dll, vì thế ta truyền tên tập tin vào attributeDllImport . ta khai báo hàm giống như trong C.Tiếp theo trong phương thức DisplayDebugMessage() , ta chỉ muốn phương thức nàychạy nếu ta đang làm 1 xây dựng vá lỗi, vì thế ta đánh dấu nó như là conditional trên biểutượng DEBUG .ta cũng xem phương thức này là 1 obsoblete , bởi vì ta đã viết một phiênbản tốt hơn, DisplayRunningMessage(), mà trình bày thêm thời gian và ngày tháng.takhông khuyến khích mọi người dùng DisplayDebugMessage() thêm nữa, vì thế ta đánhdấu nó với attribute Obsolete để trình biên dịch sẽ trình bày 1 cảnh báo nếu phương thứcnày được dùng. có 1 vài kiểu overload của hàm này :[Obsolete(The DisplayDebugMessage is obsolete. Use +DisplayRunningMessage instead.)]Hàm này sẽ sinh ra một cảnh báo nếu phương thức này được dùng, trong khi :[Obsolete(The DisplayDebugMessage is obsolete. Use +DisplayRunningMessage instead., true)]sẽ gây ra lỗi biên dịch thay vì là 1 cảnh báo nếu phương thức này được dùng. thông sốthứ hai quy định đây là lỗi hay là cảnh báo nếu obsolete được dùng .Về attribute Conditional , đây là 1 attribute phức tạp , bởi vì nếu điều kiện không hợp,trình biên dịch không chỉ không biên dịch đoạn mã trong phương thức mà còn tự động bỏqua bất kì dòng nào mã khác trong tập tin nguồn mà gọi phương thức này . để trình biêndịch có khả năng làm điều này phương thức phải trả về void . attribute Conditional chỉ cóthể áp dụng đến phương thức hoàn chỉnh như là 1 đơn vị biên dịchChạy ví dụ trên với biểu tượng DEBUG đưọc định nghĩa cho ra kết quả . lưu ý cảnh báođược đưa ra :csc Attributes.csMicrosoft ( ...
Nội dung trích xuất từ tài liệu:
Các Chủ Đề Tiến Bộ trong C# part 6Attribute1 attribute là 1 thứ dùng để đánh dấu (marker) mà được ứng dụng đến 1 phương thức hay1 lớp thậm chí là 1 đối số riêng trong 1 phưong thức ,cung cấp thông tin thêm về mục đó.ví dụ attribute Conditional có thể được dùng để đánh dấu 1 phương thức như là 1 phươngthức debug như sau :[Conditional(DEBUG)]public void DoSomeDebugStuff(){// do something}Để áp dụng 1 attribute đến 1 mục ta cung cấp tên của attribute trong ngoặc vuông ngaytrước định nghĩa mục. các attribute lấy vài thông số - những thông số này cung cấp bêntrong dấu ngoặc theo sau tên attributeỞ cấp độ cơ bản nhất của nó , ứng dụng 1 attribute vào 1 mục có thể đơn giản chỉ làthông tin thêm về mục đó đựợc bỏ trong assembly đuợc biên dịch dùng cho mục đíchhướng dẫn thêm. 1 số attribute được định nghĩa trong các lớp cơ sở đuợc nhận ra bởitrình biên dịch C#.mà từ đó trình biên dịch có thể gây ra những tác động trên mã . ví dụtrên trình biên dịch sẽ biên dịch mã của mục Conditional chỉ nếu biểu tượng DEBUG đãđược định nghĩa trước.Trong phần này ta sẽ xem xét 3 attribute sau : - Conditional : có thể đánh dấu bất kì phương thức với attribute Conditional . sẽ ngănngừa trình biên dịch từ việc biên dịch phương thức đó hay bất kì câu lệnh mà tham khảođến nó nếu tên biểu tượng không được định nghĩa. điều này có thể được dùng cho điềukiện biên dịch . - Dllimport - đôi khi ta cần truy nhập đến các Window API cơ bản hoặc các hàm kiểucũ khác mà được thực thi trong các window DLLs.attribute Dllimport dùng cho mục đíchnày . nó được dùng đánh dấu 1 phương thức được định nfghĩa trong Dll bên ngoài. - Obsolete - attribute này được dùng để đánh dấu 1 phương thức được xem nhưobsolete ( không dùng nữa) . tuỳ thuộc vào việc thiết lập trên attribute này , trình biêndịch sẽ sinh ra 1 cảnh báo hay lỗi nếu nó gặp bất kì mã nào cố gắng dùng phương thứcnày.Ta xem xét các attribute này thông qua ví dụ Attributes . trình bày 1 message box dùnghàm Window API ,MessageBox , và cũng trình bày 2 thông điệp vá lỗi. 1 trong nhữngthông điệp này được gọi trung gian qua 1 phương thức obsolete#define DEBUG // comment out this line if doing a release buildusing System;using System.Runtime.InteropServices;using System.Diagnostics;namespace Wrox.ProCSharp.AdvancedCSharp{ class MainEntryPoint { [DllImport(User32.dll)] public static extern int MessageBox(int hParent, string Message, string Caption, int Type); static void Main() { DisplayRunningMessage(); DisplayDebugMessage(); MessageBox(0, Hello, Message, 0); } [Conditional(DEBUG)] private static void DisplayRunningMessage() { Console.WriteLine(Starting Main routine. Current time is + DateTime.Now); } [Conditional(DEBUG)] [Obsolete()] private static void DisplayDebugMessage() { Console.WriteLine(Starting Main routine); } }}Đầu tiên ta chỉ định một số namespace - DllImport nằm trong namespace System.Runtime.InteropServices - Conditional nằm trong namespace System.Diagnostics .Bên trong phương thức ta định nghĩa phương thức mà ta gọi từ dll bên ngoài .hàm APIMessageBox() đuợc định nghĩa trong User32.dll, vì thế ta truyền tên tập tin vào attributeDllImport . ta khai báo hàm giống như trong C.Tiếp theo trong phương thức DisplayDebugMessage() , ta chỉ muốn phương thức nàychạy nếu ta đang làm 1 xây dựng vá lỗi, vì thế ta đánh dấu nó như là conditional trên biểutượng DEBUG .ta cũng xem phương thức này là 1 obsoblete , bởi vì ta đã viết một phiênbản tốt hơn, DisplayRunningMessage(), mà trình bày thêm thời gian và ngày tháng.takhông khuyến khích mọi người dùng DisplayDebugMessage() thêm nữa, vì thế ta đánhdấu nó với attribute Obsolete để trình biên dịch sẽ trình bày 1 cảnh báo nếu phương thứcnày được dùng. có 1 vài kiểu overload của hàm này :[Obsolete(The DisplayDebugMessage is obsolete. Use +DisplayRunningMessage instead.)]Hàm này sẽ sinh ra một cảnh báo nếu phương thức này được dùng, trong khi :[Obsolete(The DisplayDebugMessage is obsolete. Use +DisplayRunningMessage instead., true)]sẽ gây ra lỗi biên dịch thay vì là 1 cảnh báo nếu phương thức này được dùng. thông sốthứ hai quy định đây là lỗi hay là cảnh báo nếu obsolete được dùng .Về attribute Conditional , đây là 1 attribute phức tạp , bởi vì nếu điều kiện không hợp,trình biên dịch không chỉ không biên dịch đoạn mã trong phương thức mà còn tự động bỏqua bất kì dòng nào mã khác trong tập tin nguồn mà gọi phương thức này . để trình biêndịch có khả năng làm điều này phương thức phải trả về void . attribute Conditional chỉ cóthể áp dụng đến phương thức hoàn chỉnh như là 1 đơn vị biên dịchChạy ví dụ trên với biểu tượng DEBUG đưọc định nghĩa cho ra kết quả . lưu ý cảnh báođược đưa ra :csc Attributes.csMicrosoft ( ...
Tìm kiếm theo từ khóa liên quan:
máy tính mạng máy tính internet C# ngôn ngữ C# ngôn ngữ ngôn ngữ lập trình lập trình phần mềm file ứng dụngGợi ý tài liệu liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 274 0 0 -
Giáo án Tin học lớp 9 (Trọn bộ cả năm)
149 trang 265 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 265 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 264 0 0 -
Ngân hàng câu hỏi trắc nghiệm môn mạng máy tính
99 trang 252 1 0 -
Giáo trình Hệ thống mạng máy tính CCNA (Tập 4): Phần 2
102 trang 247 0 0 -
Bài giảng: Lịch sử phát triển hệ thống mạng
118 trang 246 0 0 -
47 trang 238 3 0
-
Đề cương chi tiết học phần Thiết kế và cài đặt mạng
3 trang 234 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 232 0 0