ĐHQG HCM – TRƯỜNG ĐH KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THƠNG TIN
C# căn bản
Lập trình ứng dụng quản lý 1
Ngô Chánh Đức
Nội dung
.NET Framework
C# cơ bản
Coding convention
Hướng đối tượng
Collection
Delegate
9/26/2017
C# căn bản - LTUDQL1
2
.NET Framework
9/26/2017
C# căn bản - LTUDQL1
3
Giới thiệu
Ra đời năm 2002 cùng với bộ công cụ lập trình Visual
Studio .NET
Sử dụng kỹ thuật hướng đối tượng
Hỗ trợ chuẩn Unicode
Thi hành trên máy ảo CLR (Common Language
Runtime)
Bao gồm hơn 5000 lớp đối tượng
Cung cấp bộ trình điều khiển đồ sộ (giao diện đồ họa)
Hỗ trợ dịch vụ quản lý bộ nhớ và nhiều dịch vụ khác
9/26/2017
C# căn bản - LTUDQL1
4
Kiến trúc .NET Framework
9/26/2017
C# căn bản - LTUDQL1
5
Cơ chế thực thi
9/26/2017
C# căn bản - LTUDQL1
6
Kiến trúc .NET Framework
9/26/2017
C# căn bản - LTUDQL1
7
Ứng dụng .NET Framework
Ứng dụng dòng lệnh (Console Application)
Ứng dụng WinForm (Windows Form Application)
Ứng dụng WPF (WPF Application)
Ứng dụng web (ASP.NET Web Form Application)
Thư viện DLL (Class Library)
9/26/2017
C# căn bản - LTUDQL1
8
Đọc thêm
Kiến trúc .NET Framework: />
9/26/2017
C# căn bản - LTUDQL1
9
C# căn bản
9/26/2017
C# căn bản - LTUDQL1
10
Giới thiệu
Phát triển bởi Microsoft
Xuất hiện năm 2000
Phiên bản mới nhất là C# 7.0
Là ngôn ngữ lập trình cấp cao, hiện đại, hướng đối
tượng và an tồn kiểu (type-safe)
Có nguồn gốc từ C
Cú pháp có phần quen thuộc với C, C++, Java, …
Tập tin mã nguồn có đi mở rộng là .cs
Sử dụng Visual Studio để lập trình
9/26/2017
C# căn bản - LTUDQL1
11
Hello world
using System;
class Hello
{
static void Main()
{
Console.WriteLine("Hello, World");
}
}
9/26/2017
C# căn bản - LTUDQL1
Hello.cs
12
Bắt đầu với C#
Biên dịch
Chạy gỡ rối (Debug) và chạy không gỡ rối (Run without
debug)
Chế độ Release/Debug
Chạy gỡ rối
▪Breakpoint
▪Step In / Step out / Step over
▪Watch / Auto watch / Local watch
9/26/2017
C# căn bản - LTUDQL1
13
Cấu trúc lập trình
Chương trình (Program)
Tên miền (namespace)
Kiểu dữ liệu (type)
Thành viên (member)
Hợp ngữ (assembly)
9/26/2017
C# căn bản - LTUDQL1
14
Kiểu dữ liệu
Kiểu
tham chiếu
9/26/2017
Kiểu
giá trị
C# căn bản - LTUDQL1
15
Các kiểu dữ liệu số
Signed Integral
▪sbyte: 8 bits, range from -128 to 127
▪short: 16 bits, range from -32,768 to 32,767
▪int : 32 bits, range from -2,147,483,648 to
2,147,483,647
▪long : 64 bits, range from –
9,223,372,036,854,775,808 to
9,223,372,036,854,775,807
9/26/2017
C# căn bản - LTUDQL1
16
Các kiểu dữ liệu số
Unsigned integral
▪byte : 8 bits, range from 0 to 255
▪ushort : 16 bits, range from 0 to 65,535
▪uint : 32 bits, range from 0 to 4,294,967,295
▪ulong : 64 bits, range from 0 to
18,446,744,073,709,551,615
9/26/2017
C# căn bản - LTUDQL1
17
Các kiểu dữ liệu số
Floating point
▪float : 32 bits, range from 1.5 × 10−45 to 3.4 ×
1038, 7-digit precision
▪double : 64 bits, range from 5.0 × 10−324 to
1.7 × 10308, 15-digit precision
Decimal
▪decimal : 128 bits, range is at least –7.9 ×
10−28 to 7.9 × 1028, with at least 28-digit
precision
9/26/2017
C# căn bản - LTUDQL1
18
Biến dữ liệu
int i; // Simple variable
// Many variables can have the same type declaration
float x, y, z;
byte x = 1, y, z = 3;
string name = "new name";
// Array: Indexed by an integer from Zero
int x[] = {1, 2, 3};
// compile error
int[] x = {1, 2, 3}; char[] y = new char[6]; // OK
int x1 = x[0];
// 1
// Multi dimension array: same size in all item
int [,] x = {{1, 2}, {3, 4}};
int [,] x = {{1, 2}, {3, 4, 5}};
// compile error
int x2 = x[1, 0];
// 3
int [,,] x = {{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}};
9/26/2017
C# căn bản - LTUDQL1
19
Ép kiểu số
// Smaller type in memory size integral
// type to wider one
byte b = 5; // implicit int to byte
int i = b; // i = 5
// Wider integral type to smaller one
int i = 500;
byte j = i; // compile error
byte j = (byte)i; // i = 244
// No explicit conversion for floating
// point number
9/26/2017
C# căn bản - LTUDQL1
20
Boxing / Unboxing
Boxing: chuyển kiểu giá trị object
Unboxing: trích xuất kiểu giá trị từ object
9/26/2017
C# căn bản - LTUDQL1
21
Toán tử
References: . () [] new ->
Arithmetic: + ++ - -- * / % sizeof
Logical: & | ^ !
Conditional: && (&) || ! == != > >= < <=
Type verification: is as typeof
Bitwise: ~ >> <<
Assignment: = += -= *= /= %= &= |= ^= >>=
<<=
Selection: ?: ?? (not null)
Lambda expression definition: =>
9/26/2017
C# căn bản - LTUDQL1
22
Toán tử
int i = 5;
// Selection ?:
string x = i == 5 ? "Yes": "No";
int? x = 5;
// nullable type
int y = x ?? 0; // Selection ?? operator
int z = x;
// Error: nullable type
// cannot assign to non-nullable type
// Lambda expression – anonymous method
(int x) => x * 2; <=>
public int Double(int x){return x * 2}
9/26/2017
C# căn bản - LTUDQL1
23
Cấu trúc điều khiển
Branching
▪Selection: ?: ??
▪ if… else if … else
▪ switch … case … default
Iteration
▪ for
▪ foreach
▪ do while
▪ while
Ignore & breaking
▪ continue
▪ break
9/26/2017
C# căn bản - LTUDQL1
24
Chuỗi literal
// Declaration and initialization
// "\" start an "escape" code
string s1 = "a\n", s2 = "\"",
s3 = @"a\n", s4 = s3;
// assignment
s2 = s1;
// concatenation
s3 = s1 + s3;
9/26/2017
C# căn bản - LTUDQL1
25