<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
<b>Lập trình Windows</b>
</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>
Nội dung
•
Tổng quan C#
•
Các thành phần cơ bản của ngơn
ngữ
•
Hệ thống kiểu trong .NET
•
Namespace
•
Các câu lệnh
•
Lớp
•
Thừa kế
•
Property, Mảng và Indexer
</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3></div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>
Tổng quan C#
•
C# (C-Sharp) là ngơn ngữ lập trình do Microsoft sáng tạo ra
dựa trên những
ưu điểm của
<i>C++</i>
, Java, Smalltalk
và
bổ
sung thêm những phần mới
•
Các phiên bản ngơn ngữ C#
•
C# 1.0 cho .NET Framework 1.0 (1.1)
•
C# 2.0 cho .NET Framework 2.0 (3.0)
•
C# 3.0 cho .NET Framework 3.5
</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>
Tổng quan C#
•
Mục tiêu thiết kế C#
•
<sub>Ngơn ngữ hướng thành phần (Component-orientation)</sub>
•
<sub>Mọi thứ đều là đối tượng</sub>
</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>
Ngơn ngữ hướng thành phần
•
Ngơn ngữ hướng thành phần đầu tiên trong họ C/C++
•
<sub>Khái niệm hướng thành phần</sub>
• Properties, methods, events
• Design-time và run-time attributes
• Tích hợp documentation bằng XML
•
Cho phép one-stop programming
• Không header files, IDL, …
</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>
Mọi thứ đều là đối tượng
•
Quan điểm truyền thống
•
<sub>C++, Java™: Các kiểu cơ sở (Primitive type) không thể tương tác với </sub>
các object
•
Smalltalk, Lisp: Các kiểu cơ sở là các object, nhưng phải trả giá về chi
phí thực thi
•
C# thống nhất 2 loại kiểu nhưng không phải trả giá về chi phí
thực thi
•
Tăng cường các kiểu dữ liệu khác
•
Các kiểu cơ sở mới : Decimal, SQL…
</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>
Tạo ra phần mềm mạnh và bền
•
<b>Garbage collection (GC)</b>
•
<sub>Khơng bị rị rỉ bộ nhớ và các con trỏ không được truy cập bất hợp lệ</sub>
•
<b>Ngoại lệ (Exception)</b>
•
<sub>Cho phép xử lý các ngoại lệ</sub>
•
<b>An tồn kiểu (Type-safety)</b>
•
<sub>Khơng được dùng các biến chưa khởi tạo, ép kiểu (cast) không an </sub>
</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>
Chương trình C# đầu tiên
<b>using </b>
<b>System;</b>
<b>class</b>
<b>Program</b>
<b>{</b>
<b>static</b>
<b>void</b>
<b>Main</b>
<b>(</b>
<b>string</b>
<b>[] args)</b>
<b>{</b>
</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>
Lớp
•
Một ứng dụng C# gồm tập các class và struct
•
Một lớp gồm tập dữ liệu và phương thức
•
Cú pháp
<b>class</b>
<b>ClassName</b>
<b>{</b>
<b>…</b>
</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>
Phương thức Main
•
Phương thức
<b>Main</b>
được định nghĩa trong lớp
•
Chú ý khi viết hàm
<b>Main</b>
•
<sub>Ký tự </sub>
<sub>M</sub>
<sub> phải viết HOA, “</sub>
<sub>Main</sub>
<sub>”</sub>
•
<sub>Phải có một hàm </sub>
<b><sub>Main</sub></b>
<sub> là entry point của chương trình</sub>
•
<sub>Khai báo </sub>
<b><sub>Main</sub></b>
<sub>: </sub>
<sub>static void Main</sub>
</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>
Dùng Directive và System namespace
•
.NET Framework cung cấp nhiều lớp tiện ích
•
<sub>Các lớp được tổ chức thành các namespace</sub>
•
System
là namespace được dùng thơng dụng nhất
•
Khi sử dụng lớp phải chỉ rõ
lớp đó thuộc namespace
nào
<b>System.</b>
<b>Console</b>
<b>.</b>
<b>WriteLine(</b>
<b>"Hello, World"</b>
<b>);</b>
</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>
Xuất dữ liệu
•
Nhập dữ liệu từ bàn phím và xuất dữ liệu ra màn hình trong
C# có thể dùng các
phương thức tĩnh
trong lớp:
System
.
Console
<b>void</b>
<b> Console</b>
<b>.</b>
<b>Write(data);</b>
<b>void</b>
<b> Console</b>
<b>.</b>
<b>WriteLine(data);</b>
•
Xu t d li u lên màn hình
ấ ữ ệ
</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>
Xuất dữ liệu
•
<sub>Cú pháp 2:</sub>
<b>void</b>
<b> Console</b>
<b>.</b>
<b>Write(</b>
<b>string</b>
<b> format</b>
<b>, </b>
<b>params</b>
<b>object</b>
<b>[] </b>
<b>arg);</b>
<b>void</b>
<b> Console</b>
<b>.</b>
<b>WriteLine(</b>
<b>string</b>
<b> format</b>
<b>, </b>
<b>params</b>
<b>object</b>
<b>[] </b>
<b>arg);</b>
•
Trong đó:
–
format: chứa chuỗi định dạng
–
arg là mảng các đối tượng sẽ được xuất ra
</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>
Xuất dữ liệu
•
<sub>format là một chuỗi bình thường và có thể có thêm một hay nhiều </sub>
phần định dạng có cú phỏp sau
ã Cỳ phỏp:
<b>{index[,alignment][:formatString]}</b>
Trong ú:
Đ
index: S th t của đối số, bắt đầu từ 0
</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>
Nhập dữ liệu
•
Nhập dữ liệu từ bàn phím
•
<sub>Cú pháp:</sub>
<b>int</b>
<b> Console</b>
<b>.Read();</b>
</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>
Nhập dữ liệu – Chuyển kiểu dữ liệu
•
Để chuyển một kiểu dữ liệu sang một kiểu dữ liệu khác chúng
ta dùng cú pháp sau
ã
Cỳ phỏp
<b>Kieu.</b>
<b>Parse(</b>
<b>chuoi</b>
<b>);</b>
Đ
Vớ d:
<b>string </b>
<b>s =</b>
<b>123</b>
<b>;</b>
</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>
Nhp dữ liệu – Lớp Convert
Cung cấp các phương thức static giúp chuyển đổi giữa các
dữ liệu có các kiểu khác nhau
<b>Phương th cứ</b> <b>Ý nghĩa</b>
ToBoolean Chuy n m t giá tr sang giá tr Booleanể ộ ị ị
ToByte Chuy n m t giá tr sang giá tr s nguyên 8bit không d uể ộ ị ị ố ấ
ToChar Chuy n m t giá tr sang giá tr ký t unicodeể ộ ị ị ự
ToDateTime Chuy n m t giá tr sang giá tr DateTime.ể ộ ị ị
ToDecimal Chuy n m t giá tr sang giá tr Decimal.ể ộ ị ị
<b>ToDouble</b> Chuy n m t giá tr sang giá tr s th c có đ chính xác g p đơi 8 byteể ộ ị ị ố ự ộ ấ
ToInt16 Chuy n m t giá tr sang giá tr s nguyên 16bit có d uể ộ ị ị ố ấ
<b>ToInt32</b> Chuy n m t giá tr sang giá tr só nguyên 32bit có d uể ộ ị ị ấ
ToInt64 Chuy n m t giá tr sang giá tr s nguyên 64bit có d uể ộ ị ị ố ấ
</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19></div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>
Từ khóa - keyword
abstract
as
base
bool
break
byte
case
catch
char
checked
class
const
continue
decimal
default
delegat
e
do
double
else
enum
event
explicit
extern
false
finally
fixed
float
for
foreach
goto
if
implicit
in
int
interface
internal
is
lock
long
namespac
e
new
null
object
operator
out
override params
private
protecte
d
public
readonl
</div>
<!--links-->