Bổ trợ Một số điểm khác của C# so với C ++

Chương trình C# đơn giản

/* This is the Hello world Program in C# */

using System;

class HelloWorldDemo

{

public static void Main()

{

Console.WriteLine (“This is the Hello

World program”);

}

}

pdf62 trang | Chia sẻ: oanh_nt | Lượt xem: 1658 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Bổ trợ Một số điểm khác của C# so với C ++, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1Bổ trợ 1 Một số ñiểm khác của C# so với C++ C# Simplified / Session 1 / 2 of 45 Chương trình C# ñơn giản /* This is the Hello world Program in C# */ using System; class HelloWorldDemo { public static void Main() { Console.WriteLine (“This is the Hello World program”); } } 2C# Simplified / Session 1 / 3 of 45 Khai báo biến  AccessModifier DataType Variable Public Private Protected int string float C# Simplified / Session 1 / 4 of 45 Biến trùng tên với từ khóa, sử dụng @ using System; class VariableDemo { public static void Main() { string @string; @string = ”string is a keyword but used as a variable name in this example”; Console.WriteLine (@string); } } 3C# Simplified / Session 1 / 5 of 45 C# cung cấp nhiều kiểu dữ liệu, cả kiểu số rất lớn bool val1 = true; bool val2 = false; Logic bool char val = 'h'; Ký tựchar float val = 1.23F; Thực 64 bitfloat byte val = 12;bytebyte int val = 12; Nguyên 32 bit int string s = “hello”; Xâustring object o = null; Kiểu dữ liệu cơ sởobject Ví dụMô tảKiểu dữ liệu trong C# C# Simplified / Session 1 / 6 of 45 Khai báo mảng  Kiểu[] ten = new Kiểu[số_phần_tử]  Ví dụ:  int[] a = new int[200];  String[] s = new String[20]; 4C# Simplified / Session 1 / 7 of 45 Vào / Ra trong C#  Với ứng dụng bàn giao tiếp (console) Sử dụng ñối tượng System.Console với các phương thức ñọc/ghi hay ñược sử dụng nhất là  Console.ReadLine()  Console.WriteLine() C# Simplified / Session 1 / 8 of 45 {i}, i = 0, 1, … trong xâu ký tự tham số thứ nhất ñược gọi là giành chỗ. Ký tự giành chỗ {i} sẽ ñược thay thế bởi giá trị của tham số thứ i trong danh sách khi in. Vào / Ra trong C# - Ví dụ using System; class TestDefaultValues { static void Main() { int number, result; number=5; result=100 * number; Console.WriteLine (“Result is {0} when 100 is multiplied by number {1}”, result, number); } } 5C# Simplified / Session 1 / 9 of 45 Cấu trúc ñiều khiển switch cho phép sử dụng bất kỳ giá trị gì ñể làm giá trị so sánh switch(thXuly) { case “NGHI_HOC”: Console.Write(“Ban da nghi hoc”); break; case “DI_HOC_MUON”: Console.Write(“Ban di hoc muon”); break; default: Console.Write(“Ban di hoc rat tot”); break; } Giá trị so sánh với các case trong ví dụ này là xâu ký tự C# Simplified / Session 1 / 10 of 45 Lệnh lặp foreach (1)  Sử dụng ñể lặp và duyệt các phần tử trong collection hoặc array  Cú pháp - 6C# Simplified / Session 1 / 11 of 45 Lệnh lặp foreach – Ví dụ using System; public class ForEachDemo { static void Main (String[] args) { int index; String[] array1 = new String[3]; for (index=0; index<3; index++) { array1[index] = args [index]; } foreach (String strName in array1) { Console.WriteLine(strName); } } } C# Simplified / Session 1 / 12 of 45 Hai kiểu dữ liệu trong C#  Kiểu giá trị - int, char , and structures - Kiểu tham chiếu - classes, interfaces, arrays and strings 7C# Simplified / Session 1 / 13 of 45  Dùng ñể lưu giá trị  Are stored in a stack  Dùng ñể lưu ñịa chỉ (tham chiếu) của ñối tượng  = null nghĩa là không tham chiếu ñến ñối tượng nào cả Hai kiểu dữ liệu trong C# Value Types Reference Types C# Simplified / Session 1 / 14 of 45 Value Types using System; class DataTypeTest { public static void Main() { int variableVal = 100; funcTest(variableVal); Console.WriteLine(“This value of the variable is {0}",variableVal); } static void funcTest (int variableVal) { int tempVar = 10; variableVal = tempVar*20; } } 8C# Simplified / Session 1 / 15 of 45 Reference Types using System; class DataTypeTest { public int variableVal; } class DataTypeTestRef { static void Main() { DataTypeTest dataTest = new DataTypeTest(); dataTest.variableVal = 100; funcDataTypeTest(dataTest); Console.WriteLine (dataTest.variableVal); } C# Simplified / Session 1 / 16 of 45 Reference Types - Contd static void funcDataTypeTest(DataTypeTest dataTest) { int tempVar = 10; dataTest.variableVal = tempVar*20; } } 9C# Simplified / Session 1 / 17 of 45 C# sử dụng biến tham chiếu ref hoặc biến ra out thay cho con trỏ ñể thống nhất cách xử lý và an toàn khi sử dụng public void ham1(int vao, ref int vaora, out int ra) { ra = vao + vaora; vaora = vao – vaora; } int x = 10, y = 6, z; ham1(x, ref y, out z); Kết quả: x = 10 y = 4 z = 16 C# Simplified / Session 1 / 18 of 45 Tất cả các kiểu dữ liệu trong C# ñều kế thừa từ kiểu cơ sở object using System; class ObjectProff { public static void Main() { string objectVal; objectVal = 7.ToString(); Console.WriteLine (“The value now is ”+objectVal); } } 10 C# Simplified / Session 1 / 19 of 45 Cấu trúc có cả phương thức struct SINHVIEN { public string hoten; public byte tuoi; public void datTen(string ht) { hoten = ht; } } C# Simplified / Session 1 / 20 of 45 Kiểu liệt kê (Enumerators) public enum WeekDays { Monday, Tuesday, Wednesday, Thursday, Friday } Theo mặc ñịnh, các giá trị liệt kê lần lượt là 0, 1, 2, … Ví dụ, với kiểu liệt kê trên, Monday = 0, Friday = 4 11 C# Simplified / Session 1 / 21 of 45 Kiểu liệt kê  Có thể ñịnh lại giá trị cho các thành phần liệt kê public enum WeekDays { Monday=1, Tuesday=2, Wednesday=3, Thursday=4, Friday=5 } C# Simplified / Session 1 / 22 of 45 Chồng phương thức Hai cách chồng phương thức –  Số lượng tham số khác nhau  Kiểu của tham số khác nhau 12 C# Simplified / Session 1 / 23 of 45 Chồng phương thức – Số lượng tham số khác nhau using System; public class Area { private int areaVal; public void AreaCal(int radius) { areaVal = (22/7)* radius*radius; } public void AreaCal(int length, int breadth) { areaVal = length*breadth; } public void AreaCal(int length, int breadth, int height) { areaVal = length*breadth*height; } … } C# Simplified / Session 1 / 24 of 45 Chồng phương thức – Tham số khác kiểu ... public void Add(int number1, int number2) { sum = number1 + number2; } public void Add(string value1, string value2) { int sum; sum = Int32.Parse(value1) + Int32.Parse(value2); Console.WriteLine ("Sum is {0}",sum); Console.WriteLine ("Strings are converted to integers to add”); } ... 13 C# Simplified / Session 1 / 25 of 45 Chồng toán tử  Các toán tử sau ñược phép ñịnh nghĩa chồng C# Simplified / Session 1 / 26 of 45 Chồng toán tử using System; public class Distance { int longitude, latitude; public Distance() { longitude = 0; latitude = 0; } public Distance(int longitude, int latitude) { this.longitude = longitude; this.latitude = latitude; } public static Distance operator - (Distance first, Distance second) { return new Distance(first.longitude - second.longitude, first.latitude - second.latitude); } //main } public static void Main() { Distance start = new Distance(); Distance objDistance = new Distance(); Distance finish = new Distance(); start.longitude = 12; start.latitude = 10; finish.longitude = 2; finish.latitude = 1; objDistance = start - finish; Console.WriteLine ("The Finish is {0} Degrees East and {1} Degrees North of the Start.", objDistance.longitude,objDistance.latitude); } This statement does not return an error as the ‘-’ operator is overloaded 14 C# Simplified / Session 1 / 27 of 45 Lớp bị bao bọc (Sealed Class) Không cho lớp nào kế thừa từ nó Sử dụng từ khóa ‘sealed’. … sealed class classOne { //Class Implementation } … C# Simplified / Session 1 / 28 of 45 Lớp trừu tượng  Lớp trừu tượng là lớp ñược sử dụng ñể kế thừa và không thể bao bọc nó  C# sử dụng từ khóa abstract trước ñịnh nghĩa lớp ñể chỉ một lớp là lớp trừu tượng  Một lớp trừu tượng có thể có phương thức không trừu tượng  Khi muốn viết lại một phương thức trừu tượng ở lớp kế thừa, ta dùng từ khóa override 15 C# Simplified / Session 1 / 29 of 45 Lớp trừu tượng – Ví dụ using System; abstract class BaseClass { public abstract void MethodA(); public void MethodB() { Console.WriteLine ("This is the non abstract method”); } } class DerivedClass : BaseClass { public override void MethodA() { Console.WriteLine ("This is the abstract method overriden in derived class"); } } C# Simplified / Session 1 / 30 of 45 class AbstractDemo { public static void Main() { DerivedClass objDerived = new DerivedClass(); BaseClass objBase = objDerived; objBase.MethodA(); objDerived.MethodB(); } } 16 C# Simplified / Session 1 / 31 of 45 Giao diện (Interfaces)  Giao diện là lớp trừu tượng chỉ chứa các phương thức trừu tượng mà mỗi phương thức chỉ có chữ ký, không có thân  Lớp kế thừa một giao diện phải cài ătj tất cả các phương thức của giao diện public interface IFile { int delFile(); void disFile(); } C# Simplified / Session 1 / 32 of 45 Giao diện – Ví dụ public interface IFile { int delFile(); void disFile(); } public class MyFile : IFile { public int delFile() { System.Console.WriteLine ("DelFile Implementation!"); return(0); } public void disFile() { System.Console.WriteLine ("DisFile Implementation!"); } } 17 C# Simplified / Session 1 / 33 of 45 Giao diện - Output class InterfaceDemo { public static void Main() { MyFile objMyFile = new MyFile(); objMyFile.disFile(); int retValue = objMyFile.delFile(); } } public class BaseforInterface { public void open() { System.Console.WriteLine ("This is the open method of BaseforInterface"); } } C# Simplified / Session 1 / 34 of 45 Giao diện – Kế thừa public interface IFile { int delFile(); void disFile(); } public class BaseforInterface { public void open() { System.Console.WriteLine ("This is the open method of BaseforInterface"); } } 18 C# Simplified / Session 1 / 35 of 45 Giao diện – Kế thừa public class MyFile : BaseforInterface, IFile { public int delFile() { System.Console.WriteLine ("DelFile Implementation!"); return(0); } public void disFile() { System.Console.WriteLine ("DisFile Implementation!"); } } C# Simplified / Session 1 / 36 of 45 Giao diện – Output về kế thừa class Test { static void Main() { MyFile objMyFile = new MyFile(); objMyFile.disFile(); int retValue = objMyFile.delFile(); objMyFile.open(); } } 19 C# Simplified / Session 1 / 37 of 45 Kế thừa từ nhiều giao diện public interface IFileTwo { void applySecondInterface(); } C# Simplified / Session 1 / 38 of 45 Kế thừa nhiều giao diện public class MyFile : BaseforInterface, IFile, IFileTwo { public int delFile() { System.Console.WriteLine ("DelFile Implementation!"); return(0); } public void disFile() { System.Console.WriteLine ("DisFile Implementation!"); } public void applySecondInterface() { System.Console.WriteLine ("ApplySecondInterface Implementation!"); } } 20 C# Simplified / Session 1 / 39 of 45 Kế thừa nhiều giao diện - Output class MultipleInterfaces { public static void Main() { MyFile objMyFile = new MyFile(); objMyFile.disFile(); int retValue = objMyFile.delFile(); objMyFile.open(); objMyFile.applySecondInterface(); } } C# Simplified / Session 1 / 40 of 45 Namespaces  Một namespace (không gian tên) là một ñơn vị logic của phần mềm bao gồm một hoặc nhiều lớp  Namespace ñược sử dụng ñể  tổ chức mã nguồn  tránh xung ñột tên  giảm ñộ phức tạp khi sử dụng lại 21 C# Simplified / Session 1 / 41 of 45 Tổ chức mã nguồn với namespaces NameSP1 NameSP2 NameSP11 NameSP12 Class1 Class2 Class1 Class3 Class2 Class1 Class2 Class1 Class2 Class3 C# Simplified / Session 1 / 42 of 45 Ví dụ khai báo Namespace class SamsungTelevision { ... } class SamsungWalkMan { ... } class SonyTelevision { ... } class SonyWalkMan { ... } namespace Samsung { class Television {...} class WalkMan {...} } namespace Sony { class Television {...} class Walkman {...} } 22 C# Simplified / Session 1 / 43 of 45 Namespaces lồng nhau Khai báo namespace trong namespace khác namespace Sony { namespace Television { class T14inches { ... } class T21inches { ... } } } ... namespace Sony.Television { class T14inches { ... } class T21inches { ... } } ... C# Simplified / Session 1 / 44 of 45 Namespaces & Bổ ngữ truy cập  Namespaces mặc ñịnh là public  Namespaces không thể là protected, private hoặc internal ... public namespace Sony //error { ... } private namespace Samsung //error { ... } ... 23 C# Simplified / Session 1 / 45 of 45 Namespace.classname Tên ñầy ñủ  ðể sử dụng một lớp trong cùng namespace, chúng ta chỉ cần sử dụng tên lớp (tên không ñầy ñủ)  ðể sử dụng lớp ngoài namespace, chúng ta phải sử dụng tên ñầy ñủ C# Simplified / Session 1 / 46 of 45 Tên không ñầy ñủ namespace Sony { class Television { ... } class WalkMan { ... Television MyTV = new Television(); //MyTV là Sony.Television } } 24 C# Simplified / Session 1 / 47 of 45 Tên ñầy ñủ - Ví dụ using Sony; using Samsung; using System; namespace Sony { namespace Television { class T14inches { public T14inches() { Console.WriteLine ("A 14 inches Television"); } } class T21inches { public T21inches() { Console.WriteLine ("A 21 inches Television"); } } }//end of namespace Television }//end of namespace Sony C# Simplified / Session 1 / 48 of 45 Tên ñầy ñủ - Ví dụ namespace Samsung { class Television { Sony.Television.T14inches myTV = new Sony.Television.T14inches(); } } class Test { static void Main() { Samsung.Television myTV = new Samsung.Television(); } } 25 C# Simplified / Session 1 / 49 of 45 Sử dụng chỉ dẫn namespace Sony.Television.T14inches tv = new Sony.Television.T14inches(); ... using Sony.Television; T14inches tv1 = new T14inches(); T21inches tv2 = new T21inches(); C# Simplified / Session 1 / 50 of 45 Các tên nhập nhằng tv là nhập nhằng vì không biết là Sosy.Television hay Samsung.Television? using Sony; using Samsung; class Test { static void Main() { Television tv = new Television(); //lỗi } } 26 C# Simplified / Session 1 / 51 of 45 Sử dụng tên ñầy ñủ ñể tránh nhập nhằng using Sony; using Samsung; class Test { static void Main() { Samsung.Television tv = new Samsung.Television(); } } C# Simplified / Session 1 / 52 of 45 using alias_name = fully qualified path to the namespace or class Sử dụng chỉ dẫn alias (bí danh) Sử dụng chỉ dẫn alias ñể tránh phải viết dài using T21inches = Sony.Televisions.T21inches; class Test { static void Main() { T21inches M = new T21inches(); } } 27 C# Simplified / Session 1 / 53 of 45 Thư viện các lớp cơ sở Base Class Library - BCL  Bao gồm một tập các lớp và phương thức ñược viết sẵn giúp xử lý những tác vụ hay ñược sử dụng  ðược chia sẻ bởi tất cả các ngôn ngữ ñược .NET hỗ trợ  Các lớp trong BCL ñược phân loại, mỗi loại ñược ñịnh nghĩa trong một namespaces riêng C# Simplified / Session 1 / 54 of 45 Các namespaces hay ñược sử dụng nhất Namespace / Class What it contains? System Much of the functionality of the BCL is contained within this namespace. It comprises of various other namespaces within it. System.Array class Contains methods for manipulating arrays. System.Threading Contains classes for Multi-Threading. System.Math class Contains methods for performing mathematical functions. System.IO Contains classes for reading and writing to files and streams. System.Reflection Contains classes for reading metadata from assemblies. System.Net Contains classes for Internet access and socket programming 28 C# Simplified / Session 1 / 55 of 45 System.Array Provides classes and methods for manipulating arrays using System; class Test { static void Main() { int[] arrayToReverse= {1,2,3,4,5,6,7}; Console.WriteLine ("Contents of Array before Reversing:\n"); displayArray (arrayToReverse); Array.Reverse (arrayToReverse); Console.WriteLine("\n\nContents of Array after Reversing:\n"); displayArray (arrayToReverse); } C# Simplified / Session 1 / 56 of 45 System.Array public static void displayArray(Array myArray) { foreach(int arrValue in myArray) { Console.WriteLine (arrValue); } } } 29 C# Simplified / Session 1 / 57 of 45 System.Array – Các phương thức khác C# Simplified / Session 1 / 58 of 45 System.Threading  Sử dụng ñễ cài ñặt xử lý ña luồng  ða luồng (Multi-threading) là thực thi nhiều tiến trình ñồng thời 30 C# Simplified / Session 1 / 59 of 45 System.Threading – Ví dụ using System; using System.Threading; class Test { static void Main() { Thread newThread = new Thread (new ThreadStart (ThreadToRun)); newThread.Start(); threadToRun(); } C# Simplified / Session 1 / 60 of 45 System.Threading static void threadToRun() { for(int count =1; count<10; count++) { Console.WriteLine(“The Thread Number is {0}”,count); } } } 31 C# Simplified / Session 1 / 61 of 45 ðồng bộ các luồng  Sử dụng cơ chế lock (khóa)  Cơ chế lock ñảm bảo tại mỗi thời ñiểm, chỉ có duy nhất một luồng ñược truy cập một phương thức (loại trừ lẫn nhau) C# Simplified / Session 1 / 62 of 45 ðồng bộ các luồng using System; using System.Threading; class Test { static void Main() { Test objTest = new Test(); Thread newThread = new Thread(new ThreadStart(objTest.threadToRun)); newThread.Start(); objTest.threadToRun(); } 32 C# Simplified / Session 1 / 63 of 45 ðồng bộ các luồng - Output void threadToRun() { lock(this) for (int count =1; count<10; count++) { Console.WriteLine (“The Thread Number is {0}”,count); } } } C# Simplified / Session 1 / 64 of 45 System.IO  Cung cấp nhiều lớp cho vào/ra  Các lớp File và Directory sử dụng ñể quản lý thư mục và tệp  Các thao tác bao gồm sao chép (copying), di chuyển (moving), ñổi tên (renaming) và xóa (deleting) các tệp và thư mục 33 C# Simplified / Session 1 / 65 of 45 System.IO using System; using System.IO; class Test { static void Main(string[] args) { DirectoryInfo[] dirInfoArray; FileInfo[] fileInfoArray; DirectoryInfo objDirInfo = new DirectoryInfo("c:\\Program Files"); dirInfoArray = objDirInfo.GetDirectories ("I*"); fileInfoArray= objDirInfo.GetFiles("*.*"); foreach(DirectoryInfo dirInfo in dirInfoArray) { Console.WriteLine (dirInfo); C# Simplified / Session 1 / 66 of 45 Ví dụ - Output foreach (FileInfo fileInfo in fileInfoArray) { Console.WriteLine (fileInfo); } } } } 34 C# Simplified / Session 1 / 67 of 45 System.IO using System; using System.IO; class Test { static void Main (string[] args) { Console.WriteLine (@"Creating' Directory C:\Sample ..."); Directory.CreateDirectory (@"c:\Sample"); DateTime creationDate = Directory.GetCreationTime (@"c:\Sample"); Console.WriteLine ("Directory Created on : " + creationDate.ToString()); } } C# Simplified / Session 1 / 68 of 45 System.IO Các lớp khác 35 C# Simplified / Session 1 / 69 of 45 System.String Class using System; class Test { static void Main(string[] args) { String strOriginal, strToBeReplaced, strToReplace, strReplaced; Console.WriteLine ("Enter a long string :"); strOriginal = Console.ReadLine(); Console.WriteLine ("Enter a string to be replaced in the previous string:"); strToBeReplaced = Console.ReadLine(); Console.WriteLine ("Enter a string to replace the old value :"); Cung cấp các phương thức xử lý xâu C# Simplified / Session 1 / 70 of 45 System.String strToReplace = Console.ReadLine(); strReplaced = strOriginal.Replace(strToBeReplaced,strToReplace); Console.WriteLine ("New String : " + strReplaced); } } 36 C# Simplified / Session 1 / 71 of 45 Các phương thức của String This method identifies the substrings in this instance, that are delimited by one or more characters specified in an array, then places the substrings into a String array. String Split(char[]); String Split (char[], int); Split This method right-aligns the characters in this instance, padding on the left with spaces or a specified Unicode character for a specified total length.. string PadLeft(int); string PadLeft(int, char); PadLeft This method checks whether the end of this instance matches with the specified string. Bool EndsWith (stringValue); EndsWith This method creates a new instance of a string with the same value as a specified string. String Copy(stringStr);Copy ActivitiesSyntaxMethod C# Simplified / Session 1 / 72 of 45 System.Convert  Cung cấp nhiều phương thức chuyển ñổi xâu thành số: ToByte, ToInt16, ToInt32, ToFloat, ToLong, …  Ví dụ: String xau = “1234”; int so = Convert.ToInt32(xau); 37 C# Simplified / Session 1 / 73 of 45 System.Collections (sưu tập)  Collections là các kiểu dữ liệu ñược sử dụng ñể chứa nhiều ñối tượng thuộc nhiều kiểu liệu khác nhau  Lớp Hashtable C# Simplified / Session 1 / 74 of 45 System.Collections – Ví dụ using System.Collections; class HashDemo { static void Main() { Hashtable listOfStudents = new Hashtable(); listOfStudents.Add ("Sam", "8605130"); listOfStudents.Add("Smith", "8604292"); listOfStudents.Add("Tom", "8604292"); System.Console.WriteLine ("The number of students in the school are {0} ", listOfStudents.Count); } } 38 C# Simplified / Session 1 / 75 of 45 ArrayList Class  ArrayList là lớp danh sách, cho phép lưu trữ, quản lý các ñối tượng theo kiểu danh sách C# Simplified / Session 1 / 76 of 45 ArrayList Class Chỉ một phần tử tại một chỉ mục cụ thểItem Kích thước cố ñịnh hay khôngIsFixedSize Chỉ ñọc hay khôngIsReadOnly Số phần tử thực sự ñược lưu trong danh sách Count Số vị trí có thể dùng ñể chứa các phần tửCapacity Mô tảThuộc tính Các thuộc tính 39 C# Simplified / Session 1 / 77 of 45 ArrayList Class Xác ñịnh chỉ mục cuối cùng của phần tử.LastIndexOf Xác ñịnh chỉ mục ñầu tiên của phần tửIndexOf Copy các phần tử sang arrayCopyTo Kiểu tra một phần tử có trong danh sách hay khôngContains Loại bỏ tất cả các phần tử khỏi danh sáchClear Thêm phần tử vào danh sáchAdd DescriptionMethod C# Simplified / Session 1 / 78 of 45 ArrayList Class – Ví dụ using System; using System.Collections; public class ArrlistDemo { public static void Main() { ArrayList myArrLst = new ArrayList(); Console.WriteLine ("Enter names of 5 countries below:"); for(int i = 0;i <= 4;i++) { Console.Write ("Enter country {0} :", i+1); string str1 = Console.ReadLine(); myArrLst.Add(str1); } Console.WriteLine( "Information about Countries" ); 40 C# Simplified / Session 1 / 79 of 45 ArrayList Class - Ví dụ Console.WriteLine( "\tCount:{0}", myArrLst.Count ); Console.WriteLine( "\tCapacity: {0}", myArrLst.Capacity ); Console.WriteLine ("The contents of the arraylist are as follows"); System.Collections.IEnumerator myEnumerator = myArrLst.GetEnumerator(); while ( myEnumerator.MoveNext() ) Console.Write( "\n{0}", myEnumerator.Current ); Console.ReadLine(); } } C# Simplified / Session 1 / 80 of 45 Xử lý ngoại lệ … Các lớp ngoại lệ 41 C# Simplified / Session 1 / 81 of 45 Try & catch C# Simplified / Session 1 / 82 of 45 Sử dụng nhiều catch 42 C# Simplified / Session 1 / 83 of 45 catch tổng quát C# Simplified / Session 1 / 84 of 45 throw Sử dụng throw ñể phát ra một ngoại lệ tự ñịnh nghĩa 43 C# Simplified / Session 1 / 85 of 45 Finally Mã viết trong finally ñược thực thi bất kể ngoại lệ có phát sinh hay không C# Simplified / Session 1 / 86 of 45 try…..catch – Ví dụ using System; class ExceptionDemo { static void Main() { int dividend = 50; int userInput = 0; int quotient = 0; Console.WriteLine ("Enter a number : "); try { userInput = Convert.ToInt32 (Console.ReadLine()); quotient = divident /userInput; } 44 C# Simplified / Session 1 / 87 of 45 try….catch – Ví dụ catch (System.FormatException excepE) { Console.WriteLine (excepE); } catch (System.DivideByZeroException excepE) { Console.WriteLine ("catch block"); Console.WriteLine (excepE); Console.WriteLine(""); } C# Simplified / Session 1 / 88 of 45 try….catch – Ví dụ finally { Console.WriteLine ("finally block"); if (quotient != 0) { Console.WriteLine("The Integer Quotient of 50 divided by {0} is {1}", userInput, quotient); } } } } 45 C# Simplified / Session 1 / 89 of 45 Thuộc tính (Properties)  Các lớp C# có thể có properties – thuộc tính chỉ ñặc tính hoặc thông tin về ñối tượng.  Properties khác với trường (field)  Có thể dùng properties ñể truy cập các trường – thay cho các phương thức get, set C# Simplified / Session 1 / 90 of 45 Properties { get { } set { } } có thể là private, public, protected hoặc internal. có thể nhận bất kỳ kiểu hợp lệ nào. 46 C# Simplified / Session 1 / 91 of 45 Properties – Get & Set public class Employee { private String sName private String sId public string sId { get { return sId; } set { sId = value } } C# Simplified / Session 1 / 92

Các file đính kèm theo tài liệu này:

  • pdfbo_tro_1_mot_so_diem_khac_cua_c_so_voi_c.pdf