Khi so sánh kiểu giá trị trong equal , nguyên tắc cũng giống như kiểu tham chiếu :ReferenceEquals() được dùng để so sánh tham chiếu, Equals() được dùng cho so sánh giá trị, và toán tử so sánh được xem như trường hợp trung gian.tuy nhiên sự khác biệt ở đây là kiểu giá trị cần được bỏ vào hộp ( boxed ) để chuyển thành kiểu tham chiếu.do đó microdoft nạp chồng phương thức Equals() vào lớp System.ValueType để cung cấp ý nghĩa tương đương đến kiểu giá trị.nếu ta gọi sA.Equals(sB) ,sA,sB là thể hiện của một vài Struct, thì giá trị trả về sẽ là true hoặc false tuỳ theo liệu sA và sB chứa đựng cùng giá trị trong tất cà các trường. mặt khác, không có việc nạp chồng == bằng mặc định trong stuct riêng của ta.Viết ( sA==sB) trong bất kì biểu thức nào thì đều bị lỗi trừ khi ta cung cấp 1 overload == vào mã trong Struct.
1 điểm khác là ReferenceEquals() luôn trả về false khi ứng dụng vào kiểu giá trị, bởi vì để gọi phương thức, kiểu giá trị sẽ cần bỏ vào hộp thành đối tượng . thậm chí nếu ta viết :
bool b = ReferenceEquals(v,v); // v là biến của một vài kiểu giá trị
Ta sẽ có câu trả lời là false bởi vì v sẽ được đóng hộp riêng rẽ khi chuyển mỗi thông số,nghĩa là ta sẽ có sự tham chiếu khác nhau.Gọi referenceEquals() để so sánh kiểu giá trị không phải là 1 sự chọn lựa hay.
Mặc dù nạp chồng mặc định của Equals() cung cấp bởi System.ValueType hầu như chắc chắn tương thích với số lượng lớn cấu trúc mà ta định nghĩa ,ta có thể muốn nạp chồng nó lần nữa theo ý riêng của ta để cải thiện việc thực thi.nếu 1 kiểu giá trị chứa kiểu tham chiếu như 1 trường,ta có thể muốn nạp chồng Equals() để cung cấp ngữ nghĩa tương đương cho những trường này, mặc định thì Equals() đơn giản sẽ so sánh điạ chỉ của chúng.
216 trang |
Chia sẻ: netpro | Lượt xem: 4227 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Kỹ thuật Lập trình C#, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
bute tùy biến, được dùng kết hợp với reflection, cung cấp cho code khả năng mạnh để kiểm tra các code khác, hoặc thậm chí là tự kiểm tra nó. Điều này nghĩa là sự thực thi tùy thuộc vào attribute tự tạo áp dụng đến các đối tượng trong mã của ta.Ta đã xem qua ví dụ WhatsNewAttributes mả có khả năng cung cấp các báo cáo tự động những đặc tính mới được thêm vào phần mềm.
Visual studio.NET
Visual studio.NET là một môi trường tích hợp triển khai phần mềm(Intergrated Development Environmet, IDE). Nó được thiết kế để lập ra một tiến trình viết mã, gỡ rối, và biên dịch thành một assembly một cách dễ dàng. Visual studio.NET cho bạn một ứng dụng multiple-document-interface rất tinh vi, trong đó bạn có thể liên kết mọi thứ để phát triển đoạn mã của bạn. Nó bao gồm:
Một Text Editor : trong đó bạn có thể viết đoạn mã C#. Text e ditor này thì hơi phức tạp, và rất rành cú pháp C#. Tức là, khi bạn gõ các câu lệnh vào, nó sẽ tự động bố trí đoạn của bạn, ví dụ như bằng cách thụt canh cột các dòng lệnh, cho khớp cặp dấu {}, và tô màu những từ khoá. Ngoài ra, nó sẽ thực hiện kiểm tra vài cú pháp khi bạn gõ và sẽ gạch dưới những dòng mã bị sai. Nó còn có thêm một chức năng đặc biệt là Intelliense, nó sẽ tự động hiển thị tên của các lớp, trường hay phương thức khi bạn bắt đầu gõ chúng. Khi bạn bắt đầu đánh các tham số cho phương thức, nó sẽ hiển thị danh sách tham số. Màn hình bên dưới sẽ chỉ đặc trưng này với một lớp cơ sở .NET là ListBox :
Một Design view editor, nó cho phép bạn đặt giao diện người dùng và các control dữ liệu truy cập trong dự án của bạn. Khi bạn làm như vậy, Visual studio.NET sẽ tự động thêm những mã C# cần thiết cho tập tin nguồn của bạn để tạo những control này trong dự án của bạn.
Các cửa sổ hỗ trợ cho phép bạn xem và sửa đổi những khía cạnh khác nhau trên dự án của bạn. Ví dụ có những cửa sổ cho bạn thấy những lớp hình thành đoạn mã nguồn cũng như các thuộc tính trên các lớp Windown Form hoặc Web Form. Bạn cũng có thể sử dụng những cửa sổ này để khai báo các tuỳ chọn biên dịch.
Biên dịch trong lòng môi trường: Để thay cho việc chạy trình biên dịch C# từ dòng lệnh, bạn có thể chọn một tuỳ chọn menu để biên dịch và Visual Studio.NET sẽ gọi trình biên dịch cho bạn. Nó cũng có thể chạy một chương trình khả thi đã được biên dịch, như vậy bạn có thể biết chương trình chạy tốt hay không, và bạn có thể chọn giữa hai cấu hình xây dựng chương trình khác nhau : debug build hoặc release build.
Một Intergate Debugger hỗ trợ việc gỡ rối xuyên ngôn ngữ trong khuôn viên IDE. Ngoài ra bạn có thể gỡ rối trong một lúc nhiều chương trình. Bạn có thể chỉnh sửa đoạn mã ngay trong Text editor Visual tsudio.NET để sữa chữa bug, rồi cho biên dịch lại và cho chạy lại chương trình đã được sửa chữa ngay tại chỗ bỏ lở vì lỗi.
Intergated MSDN help Visual studio.NET có thể gọi tài liệu MSDN cho bạn. Ví dụ như khi bạn không biết ý nghĩa của một từ khoá thì bạn chọn nó và nhấn F1 thì nó sẽ gọi MSDN lên để giải thích từ đó cho bạn.
Truy cập đến một chương trình khác: Nếu tất cả các tiện ích trên chưa đủ thì Visual studio.NET có thể gọi các tiện ích khác để cho phép bạn kiểm tra và sửa đổi các khía cạnh khác của máy tính bạn hay mạng mà bạn không phải rời khỏi môi trường phát triển. Giữa nhiều công cụ có sẳn, bạn có thể kiểm tra việc chạy các dịch vụ, và sự kết nối dữ liệu , và có một cửa sổ internet explorer cho phép bạn lướt Web.
Chắc chắn rằng bạn đã có kinh nghiệm trong C++ hay VB trước khi bạn làm quen với phiên bản Visual studio.NET, do đó bạn biết rằng nhiều chức năng ở trên không mới mẽ. Tuy nhiên những gì mới trong Visual studio.NET là nó liên kết tất cả chức năng trong môi trường phát triển của VS 6. Có nghĩa là những ngôn ngữ gì bạn sử dụng trong VS6, bạn sẽ tìm thấy một vài chức năng mới trong Visual Studio.NET.Từ bất kỳ nền nào, bạn sẽ tìm thấy tầm nhìn tổng thể của môi trường phát triển đã thay đổi để điều tiết các chức năng mới, những IDE xuyên ngôn ngữ đơn, và sự hợp nhất với .NET. Có nhiều menu tuỳ chọn và thanh công cụ tuỳ chọn mới, và nhiều tiện ích khác trong VS6 đã được đổi tên. Vì thế bạn cần bỏ một khoảng thời gian để làm quen với việc trình bày và làm chủ trong Visual studio.NET.
Mục đích chính của Visual studio.NET là bảo đảm bạn làm quen với tất cả các khái niệm về việc xây dựng và gỡ rối trong một ứng dụng C# và có thể sử dụng các chức năng cụ thể, điều mà không thể làm được trong môi trường phát triển của bất kỳ ngôn ngữ nào trước.
Màn hình sau sẽ thể hiện màn hình của Visual studio.NET khi bạn viết mã:
Tạo một dự án:
Khi bạn cài đặt Visual studio.NET, bạn sẽ muốn bắt đầu dự án đầu tiên. Với Visual studio.NET, ít khi bạn bắt đầu với một tâp tin trắng mà bạn sẽ gõ vào đoạn mã C# từ điểm bắt đầu. Thay vào đó bạn sẽ cho Visual studio.NET biết loại dự án mà bạn muốn tạo, sau đó nó sẽ tự động tạo ra một đoạn mã C# để tạo thành một sường outline cho dự án đó. Và bạn chỉ có việc là thêm mã của bạn vào sường đó. Ví dụ, bạn muốn viết một ứng dụng trên Window GUI, thì Visual studio.NET sẽ bắt đầu tạo một tập tin chứa đoạn mã nguồn C# cho phép tạo một form cơ bản. Form này có khả năng giao tiếp với Window, và tiếp nhận những tình huống. Nó cho phép được thu nhỏ hoặc phóng to hoặc thay đổi kích thước ... Và lúc này bạn sẽ thêm các chức năng bạn mong muốn có đối với biểu mẫu. Nếu ứng dụng của bạn được dùng theo kiểu dòng lệnh thì visual studio.NET sẽ cho bạn một namespace cơ bản, lớp, và phương thức Main() để bắt đầu. Dĩ nhiên là nếu bạn muốn bắt đầu từ số không, thì Visual studio.NET cũng cho bạn chọn một ứng dụng rỗng.
Khi bạn tạo ra một dự án, nó sẽ dàn dựng những tuỳ chọn biên dịch cần thiết để cung cấp cho trình biên dịch C# có hay không để biên dịch một ứng dụng dòng lệnh, một thư viên, hay một ứng dụng Windown. Ngoài ra, những thư viện lớp cơ sở nào bạn sẽ cần. Tuy nhiên bạn có thể sửa đổi những cài đặt này nếu bạn cần.
Khi bạn bắt đầu với visual studio.NET lần đầu tiên, bạn sẽ được thấy một start page. Đó là một trang HTML chứa các liên kết khác nhau để dẫn bạn đến với các trang web hữu ích, cho phép bạn tạo dáng và cấu hình của Visual studio.NET, hoặc mở những dự án hiện hữu hoặc khởi động dự án mới . Trên giữa màn hình start page, bạn thấy liệt kê môt số dự án mà bạn đã làm việc gần đây nhất:
Chọn một kiểu dự án:
Bạn có thể tạo một dự án mới bằng việc click trên các liên kết thích hợp trên trang bắt đầu, hay click trên menu file chọn New/project. Hay bạn có thể chọn các mẫu trong hộp dialog New project.
Các hộp Dialog này sẽ hỏi bạn muốn loại loại mã sường nào cần được tạo ra, và những tuỳ chọn biên dịch nào bạn muốn. Những trình biên dịch nào bạn muốn biên dich mã của bạn: C#, VB.NET hay C++.
Tuy nhiên, trong sách này chỉ đưa ra những tuỳ chọn có thể ứng dụng trong dự án C#
Nếu bạn chọn ..
Bạn sẽ lấy những mã C# và tuỳ chọn biên dịch được tạo ra
Windows Application
Một mẫu trống cơ bản
Class Library
Một lớp .NET có thể được gọi bởi các mã khác
Windows Control Library
Một lớp .NET có thể được gọi bởi mã khác và có một giao diện người dùng
ASP.NET Web Application
Một ASP.NET site web cơ sở : trang ASP.NET và lớp C# tạo ra HTML gửi đến trình duyệt từ các trang này
ASP.NET Web Service
Một lớp C# hành động như một Web service trọn vẹn
Web Control Library
Một control có thể được gọi lên bởi trang ASP.NET, để tạo ra mã HTML đưa bề mặt của một điều khiển khi thể hiện trên trình duyệt.
Console Application
Một ứng dụng chạy tại chế độ dòng lệnh hay một của sổ console
Windows Service
Một dịch vụ chạy trên nền Windows NT và Windows 2000
Empty Project
Không có gì hết. Bạn phải viết tất cả
Empty Web Project
Như empty project nhưng các cài đặt biên dịch được cài vào cấu trúc trình biên dịch đê tạo mã cho trang AS.NET.
New Project In Existing Folder
Những tập tin dự án mới cho một empty project
Các dự án console mới:
Khi ta click OK ở hộp dialog trên để tạo một ứng dụng console. Visual studio.NET sẽ cung cấp một số tập tin, bao gồm một tập tin mã nguồn, class1.cs chứa mã sường khởi tạo.
Hình dưới sẽ chỉ cho ta thấy những mã mà visual studio.NET viết cho ta:
Ở đây chúng ta có một chương trình C# và chưa có ý nghĩa thực thi nhưng nó chứa những yêu cầu cơ bản của một chương trình C# như là: một namespace, một lớp chứa phương thức main(). Đoạn mã này sẳn sàng để chạy nếu bạn nhấn f5 hay chọn debug/start. Tuy nhiên, trước hết chúng ta phải thêm một dòng lệnh để chương trình bạn làm gì đó.
static void Main(string[] args)
{
//
// TODO: Add code to start application here
//
Console.WriteLine("Hello from all the editors at Wrox Press");
}
Nếu bạn biên dich hay chạy dự án, bạn sẽ thấy một cửa sổ console xuất hiện và biến mất chỉ cho bạn một thời gian nhỏ để xem một tin nhắn. Nguyên nhân của vấn đề này là visual studio.NET nhớ những cài đặt của bạn khi tạo dự án và sắp xếp chúng lại để biên dịch như một ứng dụng console và chạy ngay lập tức. Sau đó Windowns nhận ra rằng nó cần chạy một ứng dụng console nhưng không có một cửa sổ console để chạy. Vì thế, Windows đã tạo ra một cửa sổ console và chạy chương trình. Ngay khi chương trình vừa thoát thì Windowns thấy nó không cần cửa sổ console nữa và huỷ nó ngay. Đó là tất cả tính logic của chương trình nhưng nó không thực sự giúp ta nhiều nếu ta muốn nhìn thấy kết quả của dự án.
Một cách tốt để giải quyết vấn đề này là chèn thêm một dòng lệnh Console.Readline() trước khi rời khỏi phương thức main():
static void Main(string[] args) { // // TODO: Add code to start application here // Console.WriteLine("Hello from all the editors at Wrox Press"); Console.ReadLine(); }
Theo cách này, chương trình của bạn sẽ chạy và hiển thị kết quả. Sau đó nó đọc dòng lệnh Console.Readline() và đợi một phím để kết thúc chương trình.
Thực thi chương trình trên
Tạo những tập tin khác:
Tập tin mã nguồn class1.cs không phải là tập tin duy nhất mà visual studio.NET tạo ra cho bạn. Nếu nhìn vào trong một thư mục nơi mà bạn yêu cầu Visual studio.NET tạo dự án của bạn thì bạn sẽ không thấy những tập tin C# mà là một cấu trúc thư mục như sau:
Hai thư mục bin và obj chứa những tập tin biên dịch và trung giang. Những thư mục con của obj sẽ chứa những tập tin tạm thời và trung giang sẽ được tạo ra, còn thư mục con của bin chứa assembly được biên dịch.
Những tập tin còn lại trong thư mục main của dự án, baisicConsoleApp, chứa thông tin về dự án và những tập tin bên trong nó. Như vậy, Visual studio.NET sẽ biết cách phải biên dịch dự án như thế nào, và cách để đọc lại nó trong lần tiếp theo khi mở dự án.
Giải pháp(solution) và dự án(project):
Điểm quan trọng ở đây là bạn cần phân biệt giữa giải pháp và dự án:
Một dự án: là một tập hợp các tập tin mã nguồn và tài nguyên(resource) sẽ được biên dịch đến một asembly đơn. Ví dụ như một dự án phải là một thư viện lớp hay ứng dụng Window GUI.
Một giải pháp: là một tập hợp tất cả các dự án để tạo thành một gói phần mềm cụ thể.
Muốn thấy sự khác biệt, chúng tôi thử lấy ví dụ khi bạn phân phối một ứng dụng cho một người sử dụng, có thể nó gồm nhiều assembly hơn là chỉ là một. Thí dụ, có thể là một giao diện người dùng; nó sẽ có vài control hay những thành phần khác được gữi đi như là những thư viện thuộc các phần của ứng dụng. Kể cả việc có thể có một giao diện khác dành cho những ngừơi quản lý. Mỗi một thành phần này có thể được chứa thành những assembly riêng lẽ, và do đó đối với Visual studio.NET như là một dự án riêng biệt. Tuy nhiên, có thể là bạn thực hiện những dự án này song hành và phối hợp với nhau giữa các dự án. Do đó, xem ra tiện lợi khi có khả năng chỉnh sửa chúng như một đơn vị duy nhất trong visual studio.NET. Visual studio.NET cho phép điều này bằng cách xem tất cả dự án như là một giải pháp, và đối xử giải pháp như là một đơn vị được đọc vào và cho phép bạn làm việc trên đó.
Đến bây giờ, ta khá lỏng lẻo về việc tạo một dự án.Trên thực tế, ví dụ ta đang làm việc, Visual studio.NET có một giải pháp cho chúng ta- một console đặc biệt chỉ chứa duy nhất một dự án. Chúng ta có thể thấy tình trạng này trên một cửa sổ của Visual studio.NET là Solution Explorer, nơi chứa một cấu trúc cây định nghĩa giải pháp của bạn.
Màn hình trên chỉ dự án chứa tập tin nguồn, class1.cs, và tập tin khác, assemblyInfo.cs chứa thông tin mô tả những assembly và thông tin đến việc biên dịch dự án. Solution explorer cho biết những assembly mà dự án tham khảo về.
Nếu bạn thay đổi các cài đặt bạn sẽ tìm thấy solution Explorer trong góc phải trên đầu màn hình. Nếu không thấy bạn vào view/Solution Explorer để hiện nó.
Các giải pháp được mô tả bởi một tập tin với đuôi .sln. Vì thế trong trường hợp trên nó là BasicConsoleApp.sln. Dự án sẽ được mô tả bởi các tập tin khác nhau trong thư mục main của dự án. Nếu bạn cố sửa những tập tin này thì bạn sẽ thấy chúng toàn là những tập tin plain text .
Thêm dự án vào một giải pháp:
Chúng tôi muốn cho bạn thấy Visual studio.NET hoạt động như thế nào với ứng dụng Window cũng như với ứng dụng Console.
Chúng tôi sẽ tạo ra một dự án Window mang tên BasicWindow, nhưng thay vì đưa vào một giải pháp mới, ta yêu cầu Visual studio.NET đưa nó vào giải pháp hiện hành BasicConsoleApp. Nghĩa là ta sẽ có một giải pháp với một ứng dụng Window và một ứng dụng console. Đấy là cách tạo một trình tiện ích mà bạn muốn chạy trên Window hoặc chạy trên dòng lệnh command line.
Có hai cách để thực hiện điều này. Cách thứ nhất là click phải lên tên của giải pháp trên cửa sổ solution explorer, để cho hiện lên trình đơn shortcut rồi chọn add/new project. Cách thứ 2 là ra lệnh file/new/new project. Cả hai cách điều hiện lên hộp thoại New Project như sau:
Trên cửa sổ solution explorer này ta có thể thấy Visual studio.NET tự động đưa một số tham khảo về các lớp cơ bản quan trọng đối với chức năng của biểu mẫu window nằm trong các spacename System.Drawing, System.Windows.Forms.
Ngoài ra, bạn cũng sẽ thấy là tên của tập tin giải pháp cũng đổi thành DemoSolution.sln. Nói chung, nếu bạn muốn thay đổi bất cứ tên tập tin nào thì solution explorer là nơi tốt nhất để tiến hành những thay đổi, vì Visual studio.NET sẽ tự động cho cập nhật bất cứ những tham khảo nào về tập tin trong tất cả các tập tin thuộc dự án. Bạn không nên sử dụng Window Explorer để thay đổi tập tin dự án vì nó sẽ phá vỡ giải pháp.
Cài đặt dự án startup
Một điểm bạn nên nhớ là cho dù bạn có nhiều dự án trong cùng một giải pháp, thì chỉ một trong những dự án này chạy trong một lúc. Khi bạn cho biên dịch một giải pháp, thì tất cả cá dự án trong giải sẽ được biên dịch. Tuy nhiên, bạn phải khai báo trong visual studio.NET biết dự án nào sẽ bắt đầu chạy khi bạn muốn gỡ rối chương trình. Nếu bạn có một EXE và nhiều thư viên mà EXE sẽ gọi thì đương nhiên EXE sẽ là dự án khởi động. Trong trường hợp của chúng ta, ta có hai EXE độc lập, ta chỉ cần lần lượt gỡ rối từng dự án.
Bạn có thể bảo Visual studio.NET dự án nào phải chạy trước, bằng cách click phải lên tên giải pháp để hiện lên trình đơn shortcut, rồi bạn chọn click mục set startup project để cho hiện lên khung đối thoại solution "DemoSolution" Property Pages. Bạn có thể cho biết dự án startup hiện hành, vì nó sẽ là dự án hiện lên in đậm trên cửa sổ Solution Explorer.
Đoạn mã ứng dụng Window:
Một ứng dụng Window chứa đoạn mã khởi động phức tạp hơn nhiều so với một ứng dụng chạy trên console, vì tạo một cửa sổ là một tiến trình phức tạp. Chúng tôi sẽ không đề cập chi tiết đến đoạn mã của một ứng dụng window. Sẽ có một chương dành cho vấn đề này. Trong tạm thời, chúng tôi cho in ra ở đây bảng liệt kê đoạn mã kết sinh bởi visual studio.NET đối với dự án BasicForm. Bạn để ý ở đây được gọi là Form1, tượng trưng cho cửa sổ chính.
using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;namespace BasicForm{ /// /// Summary description for Form1. /// public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.TextBox textBox1; /// /// Required designer variable. /// private System.ComponentModel.Container components = null; public Form1() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } /// /// Clean up any resources being used. /// protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.textBox1 = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // // textBox1 // this.textBox1.Location = new System.Drawing.Point(8, 8); this.textBox1.Name = "textBox1"; this.textBox1.TabIndex = 0; this.textBox1.Text = "textBox1"; // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 273); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.textBox1}); this.Name = "Form1"; this.Text = "Basic Form - Hello!"; this.ResumeLayout(false); } #endregion /// /// The main entry point for the application. /// [STAThread] static void Main() { Application.Run(new Form1()); } } }
Đọc vào các dự án Visual studio.NET 6
Nếu bạn lập trình theo C#, rõ ràng là bạn không cần đọc đến những dự án cũ xưa viết trên Visual studio 6, vì C# không có trên Visual studio 6. Tuy nhiên, liên thông ngôn ngữ là phần chủ chốt của .NET Framework, do đó có thể bạn muốn đoạn mã C# của bạn làm việc chung với VB.NET hoặc C++. Trong tình trạng như vậy, có thể bạn cần chỉnh sửa những dự án được tạo ra trong Visual studio 6.
Khi đọc vào những dự án và Workspace viết theo Visual Studio 6, Visual studio.NET sẽ cho nâng cấp lên thành những giải pháp visual studio.NET. Tình trạng lại khác so với các dự án C++, VB hoặc J++:
Ví dụ như trên C++, không cần thiết thay đổi đối với mã nguồn. Tất cả các chương trình C++ cũ xưa sẽ còn hoạt động tốt với trình biên dịch C++ mới. Rõ ràng là không phải đoạn mã được quản lý, nhưng vẫn biên dịch chạy ngoài .NET runtime. Nếu bạn yêu cầu Visual studio.NET đọc vào một dự án cũ xưa C++, thì nó đơn giản thêm vào một tập tin solution mới và cập nhật những tin dự án. Nó để yên các tập tin .dsm và .dsp không thay đổi để dự án có thể chỉnh sửa bởi Visual studio 6 nếu thấy cần thiết.
Đối với Visual basic thì có vấn đề, vì nó đã được thay thế bởi VB.NET. Trên VB6, mã nguồn phần lớn bao gồm những bộ điều khiển sự kiện đối với những control . Đoạn mã hiện lo việc hiển lộ cửa sổ chính và tất cả control trên ấy, không phải là thành phần của VB, nhưng lại nằm ẩn ở bên dưới như là thành phần cấu hình của dự án. Ngược lại, VB.NET hoạt động giống C#, bằng cách trưng ra toàn bộ chương trình mở toang như là mã nguồn, do đó tất cả đoạn mã sẽ hiển thị cửa sổ chính và tất cả các ô control trên ấy, đều nằm trong tập tin mã nguồn. Giống C#, VB .NET đòi hỏi mọi việc phải thiên đối tượng và thuộc lớp, trong khi ấy VB 6 không công nhận khái niệm lớp như đúng ý nghĩa của nó. Nếu bạn cố thử đọc một dự án VB6 với Visual studio .NET nó sẽ nâng cấp toàn bộ mã nguồn của VB6. Visual studio.NET cũng có thể tự động thực hiện những thay đổi này và tạo một giải pháp VB.NET mới và lúc này nó sẽ khác nhiều so với mã nguồn VB6 bị chuyển đổi và bạn sẽ phải kiểm tra để đảm bảo dự án vẫn hoạt động đúng đắn. Có nhiều khúc trên đoạn mã Visual studio.NET còn ghi chú những chú giải khi nó không biết sẽ làm gì với đoạn mã này, và buộc lòng bạn phải chỉnh sửa bằng tay.
Khảo sát và viết đoạn mã một dự án:
Folding editor:
Điều khá lý thú trên Visual studio.NET là việc sử dụng một folding editor như là code editor mặc nhiên. Bạn thử nhìn xem hình sau đây, cho thấy đoạn mã kết sinh bởi ứng dụng console.
Bạn có nhận thấy ở phía tay trái màn hình, những ô vuông nhỏ có dấu trừ (-) ở trong; Những ký hiệu này cho biết một khối lệnh bắt đầu, bạn có thể click lên ký hiệu này, nó biến thành dấu cộng (+), và khối lệnh teo lại vói một ô hình chữ nhật với 3 dấu chấm.
Đây có nghĩa là khi bạn đang chỉnh sửa, bạn có thể tập trung chỉ vào vùng nào bạn quan tâm, cho đóng lại những phần đoạn mã nào bạn không quan tâm. Không chỉ thế, nhưng nếu bạn không hài lòng cách editor chọn phần thành khối lệnh, bạn có thể cho biết một cách khác bằng cách sử dụng những chỉ thị tiền xử lý C#, chẳng hạn #region và #endregion. Thí dụ, ta quyết định ta muốn có khả năng cho teo lại đoạn nằm trong phương thức Main(), ta chèn thêm #region và #endregion như hình dưới:
Code editor sẽ tự động phát hiện khối #region và cho đặt dấu trừ ngay hàng có chỉ thị #region. Cho bao một khối lệnh nằm giữa cặp chỉ thị #region và #endregion có nghĩa là ta muốn cho teo lại tuỳ ý khối lệnh này, như hình dưới. Bạn thấy dấu cộng với chú giải ta thêm vào.
Các cửa sổ khác
Ngoài code editor, visual studio.NET còn cung cấp một số cửa sổ khác giúp bạn nhìn xem dự án theo nhiều góc độ khác nhau.
Cửa sổ Design view
Khi bạn thiết kế một ứng dụng Window, một cửa sổ mà bạn sử dụng nhiều nhất là Design view. Cửa sổ cho phép bạn hình dung toàn bộ mặt mũi ứng dụng của bạn có thể nhìn thấy được. Thông thường, bạn sử dụng phối hợp cửa sổ design view với cửa sổ Toolbox. Toolbox chứa vô số thành phần .NET mà bạn có thể lôi thả dễ dàng lên mặt bằng form của bạn.
Bạn có thể thêm riêng của bạn một loại control nào đó, gọi là custom control, vào toolbox, bằng cách click phải lên bất cứ loại nào trên toolbox rồi chọn mục Add Tab từ trình đơn shortcut. Bạn có thể thêm công cụ khác vào toolbox bằng cách chọn mục customize Toolbox cũng trên trình đơn shortcut này. Điều này rất hữu ích khi bạn muốn thêm những thành phần COM hoặc ActiveX control không có trên toolbox theo mặc định.
Nếu bạn muốn thêm một thành phần COM lên dự án bạn có thể click thành phần này lôi thả lên form giống như bạn đã làm với các ô control .NET. Lúc này visual studio.NET sẽ tự động thêm đoạn mã liên thông COM cần thiết cho phép dự án có thể gọi hàm control COM.
Bây giờ bạn muốn thấy toolbox hoạt động thế nào. Bạn muốn đặt một textbox lên dự án BasicForm. Bạn cho hiện lên Toolbox bằng cách click lên icon hoặc ấn Ctrl+Alt+X, hoặc ra lệnh View/Toolbox. Rồi bạn click tiếp lên biểu mẫu đang ở chế độ Design. Bây giờ biểu mẫu mang dáng dấp như sau
Tuy nhiên, điểm lý thú là nếu ta nhìn vào đoạn mã, ta thấy IDE đã thêm đoạn mã khởi tạo một đối tượng textbox được đặt lên biểu mẫu. Có thêm một biến thành viên trên lớp Form1:
public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.TextBox textBox1;
Ngoài ra, một đoạn mã được thêm vào phương thức InitializeComponent(), khởi gán thành phần. Hàm này sẽ được gọi bởi contructor của Form1:
/// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.textBox1 = new System.Windows.Forms.TextBox();this.SuspendLayout(); // // textBox1 // this.textBox1.Location = new System.Drawing.Point(8, 8); this.textBox1.Name = "textBox1"; this.textBox1.TabIndex = 0; this.textBox1.Text = "textBox1"; // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 268); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.textBox1});
Nếu muốn, bạn cũng có thể thêm bằng tay đoạn mã như trên vào tập tin mã nguồn, và Visual studio.NET sẽ phát hiện ra đoạn mã của bạn và cho hiện lên control tương ứng. Tuy nhiên, tốt hơn hết là thêm bằng mắt những control trên rồi để cho Visual studio.NET lo phần còn lại là thêm những đoạn mã thích hợp. Việc click vào toolbox rồi click tiếp lên biểu mẫu, điều chỉnh vị trí và kích thước các control này xem ra là nhanh hơn là suy nghĩ và gõ vào các lệnh.
Một lý do là nên thêm bằng mắt các control là vì Visual studio.NET yêu cầu những đoạn mã thêm vào bằng tay phải tuân thủ một số qui tắc, mà có thẻ bạn không tuân thủ. Đặc biệt, bạn để ý trên phương thức InitializeComponent() lo khởi gán textbox có dòng chú giải ở đầu cảnh cáo bạn là chớthay đổi. Nói thế, nhưng nếu cẩn thận, bạn cũng có thể hiệu chỉnh chẳng hạn giá trị của vài thuộc tính như vậy control có thể hiển thị khác đi. Nói tóm lại, muốn tiến hành những thay đổi như thế, bạn phải có kinh nghiệm dày dạn và phải cẩn thận hiểu mình muốn gì.
Xem toàn bộ mã của BasicForm Thực thi chương trình BasicForm
Cửa sổ properties
Một cửa sổ khác, được gọi là Properties, xuất xứ từ IDE của VB. Chúng ta biết rằng cửa sổ properties hiển thị và cho phép bạn sửa đổi hầu hết mọi giá trị khởi tạo của các thuộc tính đối với những control mà Visual studio.NET có khả năng phát hiện bằng cách đọc mã nguồn của bạn.
Cửa sổ Properties cũng có thể thấy những sự kiện. Bạn có thể nhìn thấy sự kiện bằng cách click lên icon giống như một tia sáng ở trên đầu cửa sổ.
Trên đầu cửa sổ Properties là một list box cho phép bạn chọn control nào để quan sát hoặc chỉnh sửa. Chúng tôi chọn Form1, lớp form chính trong dự án BasicF
Các file đính kèm theo tài liệu này:
- Kỹ thuật Lập trình C#.doc