Tổng quan .NET ngôn ngữ C#
C# là một ngôn ngữ lập trình của .NET
Là ngôn ngữ hiện đại
Hướng đối tượng, hướng thành phần
An toàn kiểu, mạnh mẽ, bền bỉ
Có ba loại chương trình C#
Console, Windows Form, Web Form
Tạo ra một chương trình C# đơn giản
Tạo một ứng dụng Console
Viết các câu lệnh trong thân của phương thức Main
50 trang |
Chia sẻ: tuanhd28 | Lượt xem: 1950 | Lượt tải: 4
Bạn đang xem trước 20 trang tài liệu Tổng quan .NET ngôn ngữ C#, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TỔNG QUAN .NET NGÔN NGỮ C#Nội dungGiới thiệu .NET FrameworkCLR, CTS, CLS, MSILGarbage collectionNamespaceTổng quan ngôn ngữ C#Đặc điểm ngôn ngữQuá trình biên dịch CT C#Các loại CT C#Cấu trúc chương trình C#Chương trình C# đơn giản*.NET FrameworkChương trình nền tảng cho cho công nghệ .NETCung cấp tập hợp class library thường dùngQuản lý sự thực thi của các chương trình .NET*Common Language RuntimeBase Framework ClassesData and XML ClassesCustom ClassesC# VB.NET J# C++ XML Web ServiceWeb FormsWindows FormsASP.NET.NET Framework - ArchitechtureCommon Language Infrastructure (CLI)provide a language-neutral platform for application development and execution *.NET Framework*.NET 1.1 (Apr-2003)VS .NET 2003Default: Server 2003.NET 3.5 (Nov-2007)VS.NET 2008Default: Windows 7.NET 3.0 (Nov-2006)Default: Windows Vista, Server 2008.NET 2.0 (Nov-2005)VS.NET 2005 .NET 1.0 (Feb-2002)Đặc điểm của ứng dụng .NETChạy trên nền (.NET framework)Mã nguồn được biên dịch qua MSILMSIL được thông dịch qua mã máy lúc thực thi nhờ vào CLRĐộc lập nền tảngVề lý thuyết có thể chạy trên mọi nền!Install .NET Framework redistribute packadge (dotnetfx.exe) để chạy ứng dụng .NET trên máy client.*Đặc điểm của ứng dụng .NET*MS ILCLRC++ CompilerC# CompilerJ# .NET CompilerCT C#.NETCT VB.NETCT C++.NET.NET FrameworkCT J#.NETVB .NET Compiler101101010110101011010Programmer.NET Framework - CLRTheo quan điểm của người lập trình, .NET có thể hiểu như môi trường thực thi mới và thư viện lớp cơ sở cải tiến.Môi trường thực thi là: Common Language Runtime - CLRVai trò chính CLR: locate, load, manage .NET typesCLR còn quản lý những phần ở mức thấp như: memory management, security check*.NET Framework - CTSCommon Type System (CTS): Mục đích hỗ trợ thực thi chéo ngôn ngữĐịnh nghĩa kiểu dữ liệu tiền định và có sẵn trong IL:Tất cả ngôn ngữ .NET sẽ được sinh ra mã cuối trên cơ sở kiểu dữ liệu này*IntegerInt32intVB.NETILC#. NET Framework - CLSCommon Language Specification:Đảm bảo sự thực thi chéoTất cả compiler hướng .NET đều phải tuân thủ theo CLSCó thể viết mã non-CLS nhưng sẽ ko đảm bảo thực thi chéoIL phân biệt loại ký tự, VB.NET ko phân biệt, CLS báo rằng ko cho phép 2 định danh chỉ khác nhau về kiểu ký tự, do đó VB.NET có thể hoạt động trong CLS*C#VB.NET. NET Framework - CLS*CLR/CTS/ILC++C#Visual BasicCLSCLS is the smallest common denominator of various OO-languages. FCL only uses CLS features.MS Intermediate Language IL Abstracted assembly language Ý tưởng tương tự mã Java bytecodeMã cấp thấp cú pháp đơn giản quá trình dịch sang mã máy nhanh hơnCLR chuyển IL thành mã máy lúc runtimeSự chuyển này gọi là Just – In – Time Compilation hay JIT compiling*Common Language Runtime - compilation*C++, C#, VB or any .NET languagecsc.exe or vbc.exeCompilerAssemblyDLL or EXESource CodeAssemblyManaged ModulesChứa IL code để thực thiChứa resource, metadataPortable Executable (PE)Process assembly (EXE)Library assembly (DLL)*.NET AssemblyManaged CodePhần mềm được viết để sử dụng trong .NET FrameworkPM khác thì gọi là Unmanaged code“Managed”: do chạy dưới sự giám sát của cơ chế thực thi (CLR)*Windows(OS khác)Legacy Software(unmanaged code)Common Language RuntimeManaged ExecutableGarbage collection*class myClass{ void Method(){ variable v1; variable v2; do{ . }}BECADManaged HeapA và D sẽ bị xoá do ko còn tham chiếu hay truy cập tớiGarbage collectionGC xuất hiện (ko định trước) khi ko đủ bộ nhớ để cung cấp cho ứng dụng.GC thực hiện việc tìm kiếm những đối tượng trong managed heap, xoá nếu ko còn tham chiếu tới.Có thể gọi GC một cách tường minh*NamespaceTránh xung đột tênCho phép nestTruy cập đầy đủ qua tênTất cả data type có tiếp đầu ngữ là tên namespace*Namespace CS1Class AClass BClass CNamespace CS2Class AClass BClass CCS1.ACS2.ANamespaceHầu hết các lớp cơ sở chung của .NET đều thuộc namespace SystemLớp CS Array thuộc System → System.Array.NET đề nghị tất cả kiểu do user định nghĩa phải nằm trong 1 namespace*CustomerPersonelCompanyNameTên lớpTên namespaceCác lớp .NET FrameworkThư viện lớp cơ sở .NET là managed codeKhá đa dạng & đầy đủ:Cho phép kế thừa để phát triển UDBao bọc tất cả các hàm APIDễ sử dụng (khác với VC++ trước đây)*Các lớp .NET FrameworkCác lớp .NET bao gồm:Đặc tính lõi: IL, kiểu dữ liệu trong CTSHỗ trợ Win GUI và controlWebForm (ASP.NET)Data Access (ADO.NET)Directory AccessFile System, registry accessNetworking and web browsing.NET attributes and reflectionWinOS accessCOM interoperability*Framework (Base) Class LibraryThư viện nền tảng cho .NET FrameworkCác namespace cơ bản của FCL/BCL*NamespaceDescriptionSystemChứa lớp toán học, chuyển đổi dữ liệuSystem.IOCác lớp cho thao tác Input và OutputSystem.NetCác lớp liên quan đến network protocolSystem.CollectionsChức các lớp liên quan đến xử lý tập hợpSystem.DataCác lớp của ADO.NETSystem.DrawingCác lớp thực thi chức năng GUISystem.ThreadingCác lớp lập trình MultiThreadSystem.WebCác lớp liên quan đến HTTP protocolSystem.XmlCác lớp liên quan XMLRun .NET App from ClientRequired MS .NET Framework compatibleMS .NET Framework 2.0, 3.5Install .NET 3.5 Full Redistributable package (dotnetfx35.exe, 197MB)Windows Vista comes with .NET Framework 3.0*.NET Framework X.Y.NET App.NET App.NET AppTóm tắt.NET Framework: nền tảng cho ứng dụng mới của MSTất cả các chương trình viết bằng ngôn ngữ khác nhau (trên .NET) sẽ được chuyển về mã thống nhất MSILCho phép thực thi chéo giữa các ngôn ngữKhái niệm Managed CodeCơ chế thu gom vùng nhớ tự độngCác lớp thư viện .NET phong phú & mạnh mẽ.Namespace giúp tổ chức tốt mã nguồn**C# LanguageNgôn ngữ C#Ngôn ngữ ra đời cùng với .NETKết hợp C++ và JavaHướng đối tượngHướng thành phầnMạnh mẽ (robust) và bền vững (durable)Anders Hejlsberg và MS team xây dựng C#*Ngôn ngữ C#Mọi thứ trong C# đều Object orientedKể cả kiểu dữ liệu cơ bảnChỉ cho phép đơn kế thừaDùng interface để khắc phụcLớp Object là cha của tất cả các lớpMọi lớp đều dẫn xuất từ Object*Ngôn ngữ C#Cho phép chia chương trình thành các thành phần nhỏ độc lập nhauMỗi lớp gói gọn trong một file, không cần file header như C/C++Bổ sung khái niệm namespace để gom nhóm các lớpBổ sung khái niệm "property" cho các lớpKhái niệm delegate & event*C# - mạnh mẽ & bền vữngGarbage CollectorTự động thu hồi vùng nhớ không dùngKiểm soát và xử lý ngoại lệ exceptionĐoạn mã bị lỗi sẽ không được thực thiType – safeKhông cho gán các kiểu dữ liệu khác nhauVersioningĐảm bảo sự tương thích giữa lớp con và lớp cha*Vai trò C# trong .NET Framework.NET runtime sẽ phổ biến và được cài trong máy clientViệc cài đặt App C# như là tái phân phối các thành phần .NETNhiều App thương mại sẽ được cài đặt bằng C#C# tạo cơ hội cho tổ chức xây dựng các App Client/Server n-tier.Kết nối ADO.NET cho phép truy cập nhanh chóng & dễ dàng với SQL Server, Oracle*Vai trò C# trong .NET FrameworkCách tổ chức .NET cho phép hạn chế những vấn đề phiên bảnLoại bỏ “DLL Hell”ASP.NET viết bằng C#Chạy nhanh hơn (đặc tính của .NET)Mã ASP.NET ko còn là mớ hỗn độnKhả năng bẫy lỗi tốt, hỗ trợ mạnh trong quá trình xây dựng App Web.*Quá trình dịch CT C#Mã nguồn C# (tập tin *.cs) được biên dịch qua MSILMSIL: tập tin .exe hoặc .dllMSIL được CLR thông dịch qua mã máyDùng kỹ thuật JIT (just-in-time) để tăng tốc độ*Quá trình dịch CT C#*Hello.csC# CompilerHello.exehoặcHello.dllCLR trên WindowsThực thi trên WindowsCLR trên LinuxThực thi trên LinuxThực thi trên MacOSCLR trên MacOSMSILCác loại ứng dụng C#Chương trình Console (TUI)Giao tiếp với người dùng bằng bàn phímKhông có giao diện đồ họa (GUI)Chương trình Windows FormGiao tiếp với người dùng bằng bàn phím và mouseCó giao diện đồ họa và xử lý sự kiệnChương trình Web FormKết hợp với ASP .NET, C# đóng vài trò xử lý bên dưới (underlying code)Có giao diện đồ họa và xử lý sự kiện*Ứng dụng Console*UD WinForm và Web Form*Tạo UD Console*UD C# đầu tiên*// Chương trình C# đầu tiênusing System;using System.Collections.Generic;using System.Text;namespace HelloWorld{ class Program { static void Main(string[] args) { Console.Write("Hello World!"); Console.ReadLine(); } }}Cấu trúc chương trình C#Phần chú thích (option)Phần khai báo dùng namespace (option)Phần định nghĩa namespace và lớp*// Chương trình C# đầu tiênusing System;using System.Collections.Generic;using System.Text;namespace HelloWorld { class Program { static void Main(string[] args){ { Console.Write("Hello World!"); Console.ReadLine(); } }}Câu lệnhCác câu lệnh được viết trong thân của phương thức (ở đây là phương thức Main)Thực hiện một công việc nào đóKết thúc bởi dấu chấm phẩy (;)*namespace HelloWorld{ class Program { static void Main(string[] args) { Console.Write("Hello World!"); Console.ReadLine(); } }}Các câu lệnhPhương thức MainKhoảng trắngBao gồmKý tự trắng, ký tự xuống dòng, ký tự tabDòng trốngSử dụng hợp lý chương trình dễ đọc*namespace HelloWorld{class Program {static void Main(string[] args){ Console.Write("Hello World!"); Console.ReadLine();}}}namespace HelloWorld{ class Program { static void Main(string[] args) { Console.Write("Hello World!"); Console.ReadLine(); } }}Chú thíchChú thích (comment) được dùng để giải thích về chương trình và các câu lệnhGiúp cho chương trình dễ hiểu hơnĐược bỏ qua khi biên dịchKhông ảnh hưởng tới kết quả thực thi của chương trìnhCó thể phát sinh ra documentation của chương trình qua chú thích XML*Hai cách tạo chú thích cơ bảnGõ phần chú thích sau cặp ký tự //Gõ phần chú thích giữa cặp ký tự /* và */*/* Chương trình C# đầu tiên In ra câu chào "Hello World" */using System;namespace HelloWorld{ class Program { static void Main(string[] args) { Console.Write("Hello World!"); // Xuất ra câu chào Console.ReadLine(); // Chờ nhấn Enter } }}XML CommentCho phép phát sinh ra sưu liệu dạng XMLThích hợp cho việc viết sưu liệu của dự án lớnChú thích XML bắt đầu với triple slash (“///”) và các tag của XMLChú thích XML dùng choUser defined typesClass, delegate, enum and structMember of user defined types*XML Comment*using System;namespace XMLCommentDemo{ public class Temperature { public static int CelsiusToFahrenheit(int degreesCelsius) { return ((int)((9/5)*degreesCelsius) + 32); } public static int FahrenheitToCelsius(int degressFahrenheit) { return ((int)((5/9)*(degressFahrenheit - 32))); } }} C# Code without XML CommentXML CommentComment for classComment for method* /// /// Class temperature provides functions which convert /// among various temperature scales. /// public class Temperature /// /// Converts degrees Celsius to degrees Fahrenheit /// /// Degrees Celsius /// Returns degrees Fahrenheit public static int CelsiusToFahrenheit(int degreesCelsius)XML Comment*using System;namespace XMLCommentDemo{ /// /// Class temperature provides functions which convert among various /// temperature scales. /// public class Temperature { /// /// Converts degrees Celsius to degrees Fahrenheit /// /// Degrees Celsius /// Returns degrees Fahrenheit public static int CelsiusToFahrenheit(int degreesCelsius) { return ((int)((9/5)*degreesCelsius) + 32); } /// /// Converts degrees Fahrenheit to degrees Celsius /// /// Degrees Fahrenheit /// Returns degrees Celsius public static int FahrenheitToCelsius(int degressFahrenheit) { return ((int)((5/9)*(degressFahrenheit - 32))); } }}C# Code with XML CommentTóm tắtC# là một ngôn ngữ lập trình của .NETLà ngôn ngữ hiện đạiHướng đối tượng, hướng thành phầnAn toàn kiểu, mạnh mẽ, bền bỉCó ba loại chương trình C# Console, Windows Form, Web FormTạo ra một chương trình C# đơn giảnTạo một ứng dụng ConsoleViết các câu lệnh trong thân của phương thức Main*Tài liệu tham khảoProfessional C#, 2nd Edition, Wrox Press Ltd.A programmer’s Introduction to C#, Eric Gunnerson, Apress, 2000Programming C#, Jesse Liberty, O’Reilly, First Edition, 2001C# bible, Jeff Ferguson et al, Wiley Publishing, 2002Thinking in C#, Larry O’Brien, Bruce Eckel, Prentice Hall.Presenting C#, Sams Publishing, 2002C# Language Reference, Anders Hejlsberg and Scott Wiltamuth, Microsoft Corp.*Demo*
Các file đính kèm theo tài liệu này:
- _p1_tong_quan_net_va_c_2009_6314.ppt