Upload
ceana
View
86
Download
0
Embed Size (px)
DESCRIPTION
Ngôn ngữ C. ThS. Nguyễn Hà Giang CNTT - HUTECH. Nội dung. Cấu trúc chương trình C# Kiểu dữ liệu, từ khoá, định danh biến, hằng… Chuyển đổi kiểu Console I/O Tham số ref, out, param Lệnh lặp for, while, do while, foreach Lệnh phân nhánh switch, lệnh nhảy Mảng 1 chiều, đa chiều - PowerPoint PPT Presentation
Citation preview
Ngôn ngữ CNgôn ngữ C
ThS. Nguyễn Hà GiangThS. Nguyễn Hà GiangCNTT - HUTECHCNTT - HUTECH
2Nguyen Ha Giang - 2008
Nội dungNội dung
1.1. Cấu trúc chương trình C#Cấu trúc chương trình C#2.2. Kiểu dữ liệu, từ khoá, định danh Kiểu dữ liệu, từ khoá, định danh
biến, hằng…biến, hằng…3.3. Chuyển đổi kiểuChuyển đổi kiểu4.4. Console I/OConsole I/O5.5. Tham số ref, out, paramTham số ref, out, param6.6. Lệnh lặp for, while, do while, foreachLệnh lặp for, while, do while, foreach7.7. Lệnh phân nhánh switch, lệnh nhảyLệnh phân nhánh switch, lệnh nhảy8.8. Mảng 1 chiều, đa chiềuMảng 1 chiều, đa chiều9.9. Kiểu enumerationKiểu enumeration
3Nguyen Ha Giang - 2008
Cấu trúc chương trình C#Cấu trúc chương trình C#using <namespace sử dụng>
…
namespace Tên Namespace{
[Khóa truy xuất] class Tên lớp {
public static void Main(){
…
}
// khác …
}
// lớp khác …
4Nguyen Ha Giang - 2008
using: làm chương trình gọn hơn, ko using: làm chương trình gọn hơn, ko cần phải dùng tên của namspacecần phải dùng tên của namspace
using System.using System.
namespace của chương trình: ko bắt namespace của chương trình: ko bắt buộcbuộc
class: Tối thiểu có 1 lớp chứa hàm class: Tối thiểu có 1 lớp chứa hàm entry point Main của chương trìnhentry point Main của chương trình
public static void Main(): hàm entry public static void Main(): hàm entry point của chương trình C#point của chương trình C#
Cấu trúc chương trình C#Cấu trúc chương trình C#
5Nguyen Ha Giang - 2008
Cấu trúc chương trình C#Cấu trúc chương trình C#
Nếu ko có namespace Nếu ko có namespace namespace mặc định ko tên namespace mặc định ko tên
Namespace có thể chứa: struct, interface, delegate, Namespace có thể chứa: struct, interface, delegate, enumenum
Trường hợp đơn giản nhất: 1 lớp, 1 file cs và Trường hợp đơn giản nhất: 1 lớp, 1 file cs và namespace mặc địnhnamespace mặc định
6Nguyen Ha Giang - 2008
Kiểu dữ liệuKiểu dữ liệuBao gồmBao gồm
Lớp đối tượngLớp đối tượng objectobject
Ký tựKý tự charchar
ChuỗiChuỗi stringstring
Số nguyên có dấuSố nguyên có dấu sbytesbyte, , shortshort, , intint, , longlong
Số nguyên không dấuSố nguyên không dấu bytebyte, , ushortushort, , uintuint, , ulongulong
Số thựcSố thực floatfloat, , doubledouble, , decimaldecimal
LogicLogic boolbool – – {true{true, , false}false}
Là alias của các lớp có sẵn trong .NET FrameworkLà alias của các lớp có sẵn trong .NET Frameworkstringstring ↔↔ System.StringSystem.String
intint ↔↔ System.Int32System.Int32
7Nguyen Ha Giang - 2008
Kiểu dữ liệuKiểu dữ liệu
Sử dụng kiểu dữ liệuSử dụng kiểu dữ liệu
Định nghĩa trước (C#)Định nghĩa trước (C#)Built-in value type: int, long, string, Built-in value type: int, long, string, object…object…
Chương trình định nghĩaChương trình định nghĩaClass, struct, enum…Class, struct, enum…
8Nguyen Ha Giang - 2008
The built-in value typeThe built-in value typeNameName CTS TypeCTS Type SizeSize RangeRange
sbytesbyte System.SByte System.SByte 88 -128..127-128..127
shortshort System.Int16System.Int16 1616 (-32768 .. 32767)(-32768 .. 32767)
intint Sytem. Int32Sytem. Int32 3232 -2-23131..2..23131-1-1
longlong Sytem. Int64Sytem. Int64 6464 -2-26363..2..26363-1-1
bytebyte System.SByte System.SByte 88 0..2550..255
ushortushort System.UInt16System.UInt16 1616 (0 .. 65535)(0 .. 65535)
uintuint System.UInt32System.UInt32 3232 0..20..23232-1-1
ulongulong System.UInt64System.UInt64 6464 0..20..26464-1-1
floatfloat System.SingleSystem.Single 3232 xấp xỉ từ 3,4E - 38 đến 3,4E+38xấp xỉ từ 3,4E - 38 đến 3,4E+38
doubledouble System.DoubleSystem.Double 6464 1,7E-308 đến 1,7E+3081,7E-308 đến 1,7E+308
decimaldecimal System.DecimalSystem.Decimal 128128 Có độ chính xác đến 28 con sốCó độ chính xác đến 28 con số
boolbool System.Boolean System.Boolean Kiểu true/falseKiểu true/false
charchar System.CharSystem.Char 1616 Ký tự unicodeKý tự unicode
9Nguyen Ha Giang - 2008
object: Sytem.Objectobject: Sytem.ObjectKiểu dữ liệu gốc, cha của tất cả các kiểu Kiểu dữ liệu gốc, cha của tất cả các kiểu dữ liệu trong C#dữ liệu trong C#
object o = new object();object o = new object();
string: Sytem.Stringstring: Sytem.StringChuỗi ký tự UnicodeChuỗi ký tự Unicode
string s1 = “Hutech”;string s1 = “Hutech”;
string s2 = “Hi “;string s2 = “Hi “;
string s = s1 + s2;string s = s1 + s2;
The built-in reference typeThe built-in reference type
10Nguyen Ha Giang - 2008
The built-in reference typeThe built-in reference type
11Nguyen Ha Giang - 2008
Phân loại kểu dữ liệuPhân loại kểu dữ liệu
Value typeReference
type
Data type
int Num;long count;
Object obj = new Object();String str = “reference type”;
Phân loại theo cách thức lưu trữ dữ liệu
12Nguyen Ha Giang - 2008
Kiểu giá trịKiểu giá trị
Chứa giá trị trực tiếpChứa giá trị trực tiếp
Không thể Không thể nullnullPhải chứa giá trị xác địnhPhải chứa giá trị xác định
Bao gồmBao gồmKiểu cơ bản (primitive type)Kiểu cơ bản (primitive type)
doubledouble, , charchar, , intint, , floatfloat,…,…
Kiểu enumKiểu enum
Kiểu structKiểu struct
int i = 59;
5959i
7.837.83x
5959a
double x = 7.83;int a = i;
13Nguyen Ha Giang - 2008
Kiểu tham chiếuKiểu tham chiếu
Chỉ tới nơi chứa dữ liệuChỉ tới nơi chứa dữ liệu
Có thể Có thể nullnull
nullnull: không chỉ tới bất : không chỉ tới bất kỳ đâukỳ đâu
Bao gồmBao gồm
Lớp (class) Lớp (class)
stringstring, , objectobject
Giao diện (interface)Giao diện (interface)
Mảng (array)Mảng (array)
Đại diện (delegate)Đại diện (delegate)
string s1 = "Hello";
"Hello""Hello"
"Bye""Bye"s2
s3
s1
string s2 = "Bye";string s3;s3 = s1;
14Nguyen Ha Giang - 2008
Value type vs. Reference Value type vs. Reference typetypeCharacteristicCharacteristic Value typeValue type Reference Reference
typetypeVariable holdVariable hold ValueValue ReferenceReference
AllocatedAllocated StackStack HeapHeap
DefaultDefault ZeroZero NullNull
ParameterParameter Copy valueCopy value Copy Copy referencereference
15Nguyen Ha Giang - 2008
Định danhĐịnh danhĐịnh danh: những từ được đặt ra để đại diện cho mọi thứ dùng trong chương trìnhĐịnh danh: những từ được đặt ra để đại diện cho mọi thứ dùng trong chương trình
Khi đặt định danh: nên có tính gợi nhớKhi đặt định danh: nên có tính gợi nhớ
Tạo ra định danh mớiTạo ra định danh mớiHelloWorldHelloWorld, , ProgramProgram, , PerformPerform,…,…
phải khai báo trước khi sử dụngphải khai báo trước khi sử dụng
Dùng định danh có sẵnDùng định danh có sẵnConsoleConsole, , WriteLineWriteLine, , ReadLineReadLine,…,…
phải chỉ ra nơi chứa định danh (namespace)phải chỉ ra nơi chứa định danh (namespace)
16Nguyen Ha Giang - 2008
Định danhĐịnh danhBao gồm chữ cái, chữ số, ký tự gạch Bao gồm chữ cái, chữ số, ký tự gạch dướidưới
Không được bắt đầu bằng chữ sốKhông được bắt đầu bằng chữ sốChuong_TrinhChuong_Trinh, , x25x25, , zz, , _abc_abc, , XửLýXửLý hợp hợp lệlệ
2abc2abc, , Chuong-TrinhChuong-Trinh, , Xu Ly, class Xu Ly, class không hợp lệkhông hợp lệ
Phân biệt CHỮ HOA và chữ thườngPhân biệt CHỮ HOA và chữ thườngChuongTrinhChuongTrinh và và chuongtrinhchuongtrinh là khác là khác nhaunhau
Các định danh được khai báo trong Các định danh được khai báo trong cùng phạm vi (scope) không được cùng phạm vi (scope) không được trùng nhautrùng nhau
Phải khác với từ khóaPhải khác với từ khóa
17Nguyen Ha Giang - 2008
Từ khoáTừ khoá
abstract const extern in operator sbyte throw virtualas continue false int out sealed true voidbase decimal finally interface override set try volatilebool default fixed internal params short typeof wherebreak delegate float is partial sizeof uint whilebyte do for lock private stackalloc ulong yieldcase double foreach long protected static uncheckedcatch else get namespace public string unsafechar enum goto new readonly struct ushortchecked event if null ref switch usingclass explicit implicit object return this value
Các từ khóa trong C# 2005
18Nguyen Ha Giang - 2008
HằngHằng
Một hằng (constant) là một biến Một hằng (constant) là một biến nhưng trị không thay đổinhưng trị không thay đổi
const int a = 100; // giá trị ko thể const int a = 100; // giá trị ko thể thay đổithay đổi
Hằng bắt buộc phải được gán giá trị Hằng bắt buộc phải được gán giá trị lúc khai báo lúc khai báo
Trị của hằng có thể được tính toán Trị của hằng có thể được tính toán vào lúc biên dịch vào lúc biên dịch
Hằng bao giờ cũng static Hằng bao giờ cũng static
19Nguyen Ha Giang - 2008
HằngHằng
Ưu điểmƯu điểm
Chương trình dễ đọc, khắc phục những Chương trình dễ đọc, khắc phục những con số “con số “magic numbermagic number” trong code.” trong code.
Chương trình dễ sửa hơn.Chương trình dễ sửa hơn.
Tránh lỗi dễ dàng hơn, trình biên dịch Tránh lỗi dễ dàng hơn, trình biên dịch sẽ báo lỗi nếu gán lại giá trị cho hằngsẽ báo lỗi nếu gán lại giá trị cho hằng
20Nguyen Ha Giang - 2008
HằngHằngMinh họa sử dụng hằngMinh họa sử dụng hằng
Định nghĩa hằng
21Nguyen Ha Giang - 2008
BiếnBiến
Biến (variable) là nơi lưu dữ liệu của Biến (variable) là nơi lưu dữ liệu của chương trìnhchương trình
Dữ liệu của biếnDữ liệu của biếnNằm trong bộ nhớ vật lý (physical RAM)Nằm trong bộ nhớ vật lý (physical RAM)
Có thể thay đổi giá trịCó thể thay đổi giá trị
Phải khai báo trước khi dùngPhải khai báo trước khi dùngIdentifier: tên để đại diện cho biếnIdentifier: tên để đại diện cho biến
Datatype: dạng lưu trữ dữ liệu của biếnDatatype: dạng lưu trữ dữ liệu của biến
Datatype identifier
22Nguyen Ha Giang - 2008
BiếnBiến
Phạm vi (scope)Phạm vi (scope)Được xác định bởi cặp dấu Được xác định bởi cặp dấu {{ và và }}
Có thể chứa phạm vi nhỏ hơnCó thể chứa phạm vi nhỏ hơn
Vị trí khai báo biếnVị trí khai báo biếnTrong thân phương thức: biến cục bộTrong thân phương thức: biến cục bộ
Trong thân lớp: thuộc tínhTrong thân lớp: thuộc tính
Biến trong C# chỉ có tác dụng trong Biến trong C# chỉ có tác dụng trong phạm vi mà nó được khai báophạm vi mà nó được khai báo
23Nguyen Ha Giang - 2008
Ép kiểuÉp kiểu
Ép kiểu (type-cast): chuyển giá trị từ Ép kiểu (type-cast): chuyển giá trị từ kiểu này sang kiểu kháckiểu này sang kiểu khác
Ví dụVí dụChuyển từ Chuyển từ intint qua qua floatfloat và ngược lại và ngược lại
Có hai loạiCó hai loạiÉp kiểu ngầm định (implicit type-cast)Ép kiểu ngầm định (implicit type-cast)
Ép kiểu chỉ định (explicit type-cast)Ép kiểu chỉ định (explicit type-cast)
24Nguyen Ha Giang - 2008
Ép kiểu ngầm địnhÉp kiểu ngầm định
Do C# tự thực hiệnDo C# tự thực hiện
Không cần lập trình viên can thiệpKhông cần lập trình viên can thiệp
Xảy ra khiXảy ra khiÉp từ kiểu nhỏ qua kiểu lớnÉp từ kiểu nhỏ qua kiểu lớn
Ép từ lớp dẫn xuất qua lớp cơ sởÉp từ lớp dẫn xuất qua lớp cơ sở
int i = 59;double x = i;
string s = "Hello";object o = s;
25Nguyen Ha Giang - 2008
C# hỗ trợ ép kiểuC# hỗ trợ ép kiểu
FromFrom ToTo
sbyte sbyte short, int, long, float, double, decimal short, int, long, float, double, decimal
byte byte short, ushort, int, uint, long, ulong, float, short, ushort, int, uint, long, ulong, float, double, decimal double, decimal
short short int, long, float, double, decimal int, long, float, double, decimal
ushort ushort int, uint, long, ulong, float, double, decimal int, uint, long, ulong, float, double, decimal
int int long, float, double, decimal long, float, double, decimal
uint uint long, ulong, float, double, decimal long, ulong, float, double, decimal
long, ulong long, ulong float, double, decimal float, double, decimal
float float double double
char char ushort, int, uint, long, ulong, float, double, ushort, int, uint, long, ulong, float, double, decimal decimal
26Nguyen Ha Giang - 2008
Ép kiểu chỉ địnhÉp kiểu chỉ định
Do lập trình viên chỉ địnhDo lập trình viên chỉ định
Xảy ra khiXảy ra khiÉp từ kiểu lớn qua kiểu nhỏ: có thể mất Ép từ kiểu lớn qua kiểu nhỏ: có thể mất giá trịgiá trị
Ép từ lớp cơ sở qua lớp dẫn xuấtÉp từ lớp cơ sở qua lớp dẫn xuất
double x = 74.86;int i = (int)x; // i = 74
string s = "Hello";object o = s;string s2 = (string)o;
27Nguyen Ha Giang - 2008
Ép kiểu chỉ định bằng Ép kiểu chỉ định bằng ConvertConvert
Thường dùng khi cần chuyển đổi giữa Thường dùng khi cần chuyển đổi giữa các kiểu không có liên hệ với nhaucác kiểu không có liên hệ với nhau
Convert.toDataType(Convert.toDataType(SourceValueSourceValue))
Ví dụ: chuyển từ chuỗi sang số thựcVí dụ: chuyển từ chuỗi sang số thực
string s1 = "56.8";
double x = Convert.ToDouble(s1); // x = 56.8int i = Convert.ToInt32(s2); // i = 95
string s2 = "95";
byte j = Convert.ToByte(x); // j = 56, ít dùng
28Nguyen Ha Giang - 2008
Console I/OConsole I/O
Để đọc ký tự văn bản từ cửa sổ Để đọc ký tự văn bản từ cửa sổ consoleconsole
Console.Read() giá trị trả về là intConsole.Read() giá trị trả về là int
Console.ReadLine() giá trị trả về là stringConsole.ReadLine() giá trị trả về là string
Để xuất chuỗi ký tự dùngĐể xuất chuỗi ký tự dùngConsole.Write() / Console.WriteLine()Console.Write() / Console.WriteLine()
29Nguyen Ha Giang - 2008
Console I/OConsole I/O
Console.WriteLine()Console.WriteLine()
\n: ký tự xuống dòng
30Nguyen Ha Giang - 2008
Console I/OConsole I/O
/ F5
Xuất chuỗiĐọc chuỗi
Chờ đọc 1 dòng, mục đích là dừng màn hình
31Nguyen Ha Giang - 2008
Boxing & UnboxingBoxing & Unboxing
Kiểu giá trị có thể được chuyển thành Kiểu giá trị có thể được chuyển thành kiểu đối tượngkiểu đối tượng
BoxingBoxing
UnboxingUnboxing UnboxingUnboxing
BoxingBoxing
32Nguyen Ha Giang - 2008
Keywords Keywords const & const & readonlyreadonlyconstconst: phải được gán giá trị khi khai báo
readonlyreadonly: ko cần khởi tạo trước, khi gán giá trị thì sau đó ko thay đổi được
Chưa được khởi gán
Ko được thay đổi
33Nguyen Ha Giang - 2008
checked & uncheckedchecked & unchecked
throws OverFlowException
34Nguyen Ha Giang - 2008
refref, out, param, out, param
ref: tương tự như truyền tham chiếu trong ref: tương tự như truyền tham chiếu trong C/C++C/C++
Từ khoá ref phải được dùng lúc gọi hàmTừ khoá ref phải được dùng lúc gọi hàm
Các tham số truyền dạng ref phải được Các tham số truyền dạng ref phải được khởi tạo giá trị trước khởi tạo giá trị trước
Khai báo ref trước kiểu dữ liệu
sử dụng ref cho tham số khi gọi hàm
35Nguyen Ha Giang - 2008
refref, , outout, param, param
out: tương tự như refout: tương tự như ref
Khác ref là ko cần khởi tạo giá trị trước khi Khác ref là ko cần khởi tạo giá trị trước khi truyềntruyền
Khai báo cho tham số
Dùng trước tham số khi gọi hàm
36Nguyen Ha Giang - 2008
refref, , outout, , paramparam
3 phần tử 6 phần tử Mảng array
Luôn khai báo ở cuối danh sách tham số
37Nguyen Ha Giang - 2008
thisthis
public class list{ private int size;
...
public SetSize (int size) { this.size = size; }
38Nguyen Ha Giang - 2008
Lệnh lặpLệnh lặp
Tương tự như C: while, do while, forTương tự như C: while, do while, for
while <điều kiện>while <điều kiện>{{
// phần thân while// phần thân while
}}
do do {{
// phần thân do while// phần thân do while
} while <điều kiện>;} while <điều kiện>;
for( khởi tạo biến lặp; <điều kiện theo biến lặp>; thay đổi biến lặp)for( khởi tạo biến lặp; <điều kiện theo biến lặp>; thay đổi biến lặp){{
// phần thân for// phần thân for
}}
Phải là giá trị bool: true, falsePhải là giá trị bool: true, false
39Nguyen Ha Giang - 2008
Lệnh lặpLệnh lặpindex = 10;while(index != 0){ Console.WriteLine(index); index--;}
index = 0;do{ Console.WriteLine("Happens at least once"); }while(index < 0);
for(index = 0;index<100;index++){ Console.Write(index); Console.Write("\t");}
Giá trị {true, false}Giá trị {true, false}
40Nguyen Ha Giang - 2008
Lệnh lặp Lệnh lặp foreachforeachforeach( typedata identifier foreach( typedata identifier inin objectArray) objectArray){{
// thân foreach// thân foreach
}}
==
Chỉ sử dụng biến i cho mỗi
lần lặp
Sử dụng chỉ số mảng như bình
thường
41Nguyen Ha Giang - 2008
switchswitch
Biểu thức switch gồm: kiểu số, ký tự, enum và Biểu thức switch gồm: kiểu số, ký tự, enum và chuỗichuỗi
sử dụng break, goto, return để điều khiển luồng sử dụng break, goto, return để điều khiển luồng thực thithực thi
Nếu ko nhãn nào phù hợp -> defaultNếu ko nhãn nào phù hợp -> default
Nếu ko có default -> thực hiện lệnh sau switchNếu ko có default -> thực hiện lệnh sau switch
42Nguyen Ha Giang - 2008
Lệnh nhảyLệnh nhảy
breakbreakThoát khỏi vòng lặpThoát khỏi vòng lặp
continuecontinueQua bước lặp kếQua bước lặp kế
gotogotoNhảy đến nhãn Nhảy đến nhãn
Sử dụng goto case <Sử dụng goto case <expressionexpression>, trong >, trong switchswitch
43Nguyen Ha Giang - 2008
Lệnh nhảy returnLệnh nhảy return
Thoát khỏi hàm voidThoát khỏi hàm void
Trả về 1 giá trị của hàmTrả về 1 giá trị của hàm
void Func1(int x) {
if (x == 0)
return;
...
}
int max(int a, int b) { if (a > b) return a; else return b;}
44Nguyen Ha Giang - 2008
MảngMảng
Chứa một số những biến có cùng kiểu Chứa một số những biến có cùng kiểu dữ liệu.dữ liệu.
Truy xuất phần tử thông qua chỉ số Truy xuất phần tử thông qua chỉ số (index)(index)
Chỉ số bắt đầu bằng 0.Chỉ số bắt đầu bằng 0.
VDVDint[] myInteger = new int[5];int[] myInteger = new int[5];
string[] myString = string[] myString = {“BeMun”,”BeTien” };{“BeMun”,”BeTien” };
Datatype[ ] array-nameDatatype[ ] array-name
45Nguyen Ha Giang - 2008
MảngMảng
Lấy kích thước mảng qua thuộc tính LengthLấy kích thước mảng qua thuộc tính Lengthint Size = myArray.Length;int Size = myArray.Length;
NNếu thành phần của mảng là kiểu ếu thành phần của mảng là kiểu định trước, có thể dùng hàm Sort của định trước, có thể dùng hàm Sort của Array để sắp xếpArray để sắp xếp
Array.Sort(myArray);Array.Sort(myArray);
Dùng hàm Reverse của Array để đảo Dùng hàm Reverse của Array để đảo thứ tự các phần tử trong mảngthứ tự các phần tử trong mảng
Array.Reverse(myArray);Array.Reverse(myArray);
46Nguyen Ha Giang - 2008
MảngMảng
Dùng phương thức tĩnh Sort của lớp Array để sort artists
Dùng phương thức tĩnh Reverse của lớp Array để đảo thứ tự artists
47Nguyen Ha Giang - 2008
Mảng nhiều chiềuMảng nhiều chiều
Khai báo mảng int 2 dòng 3 cộtKhai báo mảng int 2 dòng 3 cộtint[,] myMatrix = new int[2,3];int[,] myMatrix = new int[2,3];
Có thể khởi gánCó thể khởi gánint[,] myMatrix = new int[,] {{1,2},{3,4},int[,] myMatrix = new int[,] {{1,2},{3,4},{5,6},{7,8}};{5,6},{7,8}};
int[,] myMatrix = {{1,2},{3,4},{5,6},{7,8}};int[,] myMatrix = {{1,2},{3,4},{5,6},{7,8}};
string[,] beatleName = {{"Lennon","John"}, string[,] beatleName = {{"Lennon","John"},
{"McCartney","Paul"}, {"McCartney","Paul"}, {"Harrison","George"}, {"Harrison","George"},
{"Starkey","Richard"}}; {"Starkey","Richard"}};
Datatype[,] array-nameDatatype[,] array-name
48Nguyen Ha Giang - 2008
Mảng nhiều chiềuMảng nhiều chiều
Truy cập tuần tự theo kiểu mảng 1 chiều
Truy cập theo dạng dòng cột qua chỉ mục i và j
49Nguyen Ha Giang - 2008
Mảng JaggedMảng Jagged
Jagged là mảng mà mỗi phần tử là một Jagged là mảng mà mỗi phần tử là một mảng có kích thước mảng có kích thước khác nhaukhác nhau
Những mảng con này phải được khai báo Những mảng con này phải được khai báo riêngriêng
Khai báo mảng 3 dòng, mỗi dòng là một Khai báo mảng 3 dòng, mỗi dòng là một mảng 1 chiềumảng 1 chiều
Datatype[ ][ ] array-nameDatatype[ ][ ] array-name
int[][] a = new int[3][];a[0] = new int[4];a[1] = new int[3];a[2] = new int[1];
Khai báo số dòng, hàng
Khai báo số cột riêng chotừng dòng
50Nguyen Ha Giang - 2008
Mảng JaggedMảng Jagged
Truy cập theo dòng, cột Truy cập dùng foreach
51Nguyen Ha Giang - 2008
EnumerationEnumeration
Dùng thay thế hằngDùng thay thế hằng
Tập hợp các giá trị hằng được đặt tênTập hợp các giá trị hằng được đặt tên
Khai báo trực tiếp trong namespaceKhai báo trực tiếp trong namespace
Là kiểu dữ liệuLà kiểu dữ liệuenum Color { Red, Green, Blue };enum Access { personal = 1, group = 2, all = 4 };
Color c = Color.Red;
Access a = Access.personal | Access.group;If ((Access.personal & a) != 0) Console.WriteLine("access granted");
Sử dụngSử dụng
52Nguyen Ha Giang - 2008
EnumerationEnumeration
Enumeration kế thừa từ object (Equals, Enumeration kế thừa từ object (Equals, ToString()).ToString()).
53Nguyen Ha Giang - 2008
EnumerationEnumeration