Định danh (Identifier)

Một phần của tài liệu Giáo trình lập trình windowns form với c net tập 1 TS lê trung hiếu, ths nguyễn thị minh thi (Trang 26)

Định danh là tờn được đặt cho kiểu dữ liệu, phương thức, biến,

hằng, đối tượng, khụng gian tờn… Định danh là một dóy ký tự cú

phõn biệt chữ hoa, thường. Tờn bắt đầu bằng ký tự chữ cỏi hoặc dấu

gạch nối dưới _, cỏc ký tự cũn lại phải là ký tự chữ cỏi, chữ số, dấu

gạch nối dưới. Cỏc định danh khụng được đặt tờn trựng với từ khúa

của C#.

Khi đặt tờn nờn theo quy tắc đặt tờn định nghĩa sẵn của C# cho

dễ nhớ là tất cả cỏc tờn của lớp, phương thức, biến, giao tiếp, khụng gian tờn… đều viết chữ hoa đầu từ, ngoại trừ tờn hằng viết chữ hoa.

2.1.4. Lời chỳ thớch (Comment)

Lời chỳ thớch thờm vào chương trỡnh với mục đớch giải thớch, giỳp cho người lập trỡnh dễ dàng bổ sung, sửa chữa, nõng cấp chương

trỡnh. Khi chạy chương trỡnh, trỡnh dịch sẽ bỏ qua chỳ thớch.

Cỏc lời chỳ thớch cú thể được thờm vào trong mó nguồn C#

giống như trong Java, C++ và cú thể đặt tại bất kỳ vị trớ nào:

 Chỳ thớch gồm một hay nhiều dũng: bắt đầu chỳ thớch với

dấu /* và kết thỳc bởi */

 Chỳ thớch một dũng: bắt đầu dũng chỳ thớch bởi dấu //  Ngoài hai kiểu chỳ thớch trờn giống trong Java, C++ thỡ C#

cũn hỗ trợ thờm kiểu thứ ba, kiểu này chứa cỏc định dạng

XML nhằm xuất ra tập tin XML khi biờn dịch để tạo tài liệu

chỳ thớch cho mó nguồn. Cỏc chỳ thớch XML rất đơn giản, được tạo bằng cỏch đặt dấu /// trước cỏc lớp, giao tiếp, phương thức hoặc trước phần khai bỏo thuộc tớnh… Cú hơn

20 loại thẻ khỏc nhau cú thể được sử dụng trong cỏc chỳ thớch XML, và được chia làm 2 loại chớnh: thẻ chớnh và thẻ phụ.

Sau khi tạo chỳ thớch, mở cửa sổ Properties của ứng dụng, chọn

trang Build, rồi kớch chọn mục XML documentation file. Biờn dịch ứng dụng, sẽ phỏt sinh tập tin tài liệu chỳ thớch .XML.

Hay sử dụng trỡnh biờn dịch dũng lệnh với tựy chọn

/doc:TậpTin.xml

csc /doc:Hello.xml Hello.cs

Vớ dụ: Chỳ thớch cho một hay nhiều dũng using System; namespace Hello { class Hello { /* Xuất ra màn hỡnh lời chào

Sử dụng phương thức WriteLine của lớp System.Console

*/

static void Main() {

//Xuất chuỗi “Welcome to C#”

Console.WriteLine("Welcome to C#"); } } } Chỳ thớch tài liệu XML Cỏc thẻ chớnh: Là những thẻ mà bạn sử dụng một cỏch độc lập với những thẻ khỏc. a1. <summary>

Thẻ <summary> mụ tả kiểu và thành viờn của kiểu như mụ tả

lớp, phương thức, thuộc tớnh…

a2. <remarks>

Thẻ <remarks> sử dụng để mụ tả một kiểu, bổ sung thụng tin

cho thẻ <summary>.

a3. <value>

/// <value>

/// Họ và tờn nhõn viờn /// </value>

private string fullname;

a4. <param>

Thẻ <param> được sử dụng để chỳ thớch từng tham đối của một phương thức.

a5. <returns>

Thẻ này được sử dụng để chỳ thớch giỏ trị trả về của một phương thức.

/// <summary>

/// Lớp thư viện chứa cỏc phương thức xử lý chuỗi

/// </summary>

public class StringProcess {

/// <remarks>

/// Phương thức trả về chuỗi con của một chuỗi

/// </remarks>

///<param name="st">Chuỗi cần lấy chuỗi con</param> ///<param name="startIndex">Vị trớ bắt đầu lấy chuỗi con

</param>

///<param name="endIndex">Vị trớ kết thỳc chuỗi con

</param>

///<returns>Trả về chuỗi con từ vị trớ startIndex đến vị trớ

endIndex</returns>

public static string SubString(string st, int startIndex, int endIndex) {}

a6. <exception>

Thẻ <exception> chỳ thớch ngoại lệ mà phương thức phỏt sinh

bởi thuộc tớnh cref và giải thớch khi nào ngoại lệ phỏt sinh.

a7. <example>

Thẻ này cú thể được sử dụng để cung cấp một vớ dụ về cỏch sử

dụng phương thức, thuộc tớnh. Cỏc vớ dụ là một phần chớnh của việc

ghi chộp tài liệu chất lượng cao, là hướng dẫn tốt cho cỏc nhà phỏt triển. Bằng cỏch sử dụng thẻ <example> cựng với thẻ <code> (một

trong những thẻ phụ), bạn cú thể cung cấp trực tiếp cỏc vớ dụ.

/// <summary>

/// Phương thức xúa và trả về phần tử ở đỉnh của ngăn xếp stack

/// </summary>

/// <returns>Trả về giỏ trị phần tử ở đỉnh stack</returns> /// <exception cref="EmptyStackException">

/// Ngoại lệ phỏt sinh khi stack rỗng

/// </exception> /// <example> /// <code>

/// // Lấy phần tử ở đỉnh của stack /// string st = s.Pop();

/// </code> /// </example> public string Pop() {}

a8. <permission>

Thẻ <permission> cho phộp bạn xỏc định quyền truy cập một

thành viờn.

public class TestClass {

/// <permission cref="System.Security.PermissionSet"> Mọi người cú thể truy cập phương thức này </permission>

void Test() {} }

a9. <seealso>

Cú thể được sử dụng để tham chiếu cỏc lớp, thành viờn của lớp

hoặc tài liệu bổ sung khỏc.

public class TestClass {

/// <summary>DoWork là một phương thức của lớp

TestClass

/// <seealso cref="TestClass.Main"/> /// </summary>

public static void DoWork(int Int1) {} static void Main() {}

}

a10. <include>

Thẻ <include> được sử dụng để tham chiếu đến cỏc chỳ giải

trong tập tin khỏc. Thay vỡ chỳ thớch trong mó nguồn, bạn cú thể sử

dụng một tập tin chỳ giải bờn ngoài. Để sử dụng thẻ này, bạn cần xỏc định tờn tập tin chứa chỳ giải và biểu thức XPath chỉ đến chỳ giải:

<include file = 'TậpTin' path = 'ĐườngDẫnThẻ [@name = "TờnThẻ"]'/>

Đường dẫn thẻ: biểu thức XPath hợp lệ chọn thẻ chứa chỳ giải

trong tập tin

Tờn thẻ: tờn của thẻ chứa chỳ giải

/// <include file='xml_include_tag.doc'

/// path='MyDocs/MyMembers[@name="test"]' /> public class Test

{

void TestMethod() {} }

Cỏc thẻ phụ

Là thẻ được sử dụng bờn trong cỏc thẻ chớnh. Những thẻ

này được sử dụng để đỏnh dấu và định dạng Text để đưa vào cỏc thẻ

chớnh.

b1. <c> và <code>

Thẻ <code> được sử dụng định nghĩa một hay nhiều dũng là mó. Và thẻ <c> định nghĩa một phần chỳ thớch là mó.

/// <summary>

/// Thay thế cỏc ký tựđặc biệt bằng dấu cỏch <c>ReplaceSpecial Char("a")</c>

/// </summary>

/// <param name="s"></param>

/// <returns>Trả về chuỗi sau khi đó thay thế ký tự đặc biệt bằng

dấu cỏch</returns> /// <example>

/// <code>

/// Chuỗi ký tựđặc biệt

/// // gỏn cỏc ký tựđặc biệt thành ký tự rỗng. /// s = s.ReplaceSpecialChar("%---**"); /// </code>

/// </example>

private static string ReplaceSpecialChar(string s){}

b2. <para>

Được sử dụng để chỉ định một đoạn trong cỏc chỳ thớch. Nếu

cỏc chỳ thớch dài, bạn nờn ngắt nú thành cỏc đoạn để làm cho việc đọc

trở nờn dễ dàng hơn.

b3. <see>

Thẻ <see> cú thể sử dụng giống như thẻ <seealso> nhưng thẻ

<see> sử dụng bờn trong một thẻ khỏc. Khi bạn muốn liệt kờ một số phương thức của một lớp và sử dụng thẻ <see> để tham chiếu đến

những phương thức đú.

public class TestClass {

/// <summary>DoWork là phương thức của lớp TestClass

/// <para> Ngắt đoạn chỳ thớch <see

cref="System.Console.WriteLine"/> cho thụng tin về lệnh

xuất </para>

/// <seealso cref="TestClass.Main"/> /// </summary>

public static void DoWork(int Int1) {} static void Main() {}

}

b4. <paramref >

Thẻ này xỏc định tham đối nào mà bạn tham chiếu đến /// <remarks>Phương thức MyMethod thuộc lớp MyClass

/// <paramref name="i"/> tham đối là một số nguyờn /// </remarks>

public static void MyMethod(int i) {}

b5. Cỏc thẻ List

Cỏc thẻ List để tạo cỏc danh sỏch. Thẻ <list> cú một thuộc tớnh Type, định nghĩa loại danh sỏch nào mà bạn đang tạo cú thể cú giỏ trị

bullet, number hoặc table.

Thẻ con của thẻ <list> là thẻ <listheader> cú thể được sử dụng để định nghĩa tiờu đề cho danh sỏch. Nú cú thể chứa cỏc thẻ <term>

và <description>.

Thẻ <list> cú thể chứa cỏc thẻ <item>. Mỗi thẻ <item> là một

mục trong danh sỏch và cú thể bao gồm cỏc thẻ <term> và thẻ

<description>.

public class MyClass {

/// <remarks> Đõy là vớ dụ thẻ tạo danh sỏch

/// <list type="bullet"> /// <item> /// <description>Item 1.</description> /// </item> /// <item> /// <description>Item 2.</description> /// </item> /// </list> /// </remarks>

public static void Main (){} }

2.2. KIỂU DỮ LIỆU, BIẾN, HẰNG

2.2.1. Kiểu dữ liệu (Data type)

C# là một ngụn ngữ định kiểu mạnh mẽ. Kiểu dữ liệu là tập hợp

cỏc giỏ trị mà một biến thuộc kiểu đú cú thể nhận được. Mỗi biến phải

khai bỏo thuộc một kiểu dữ liệu.

Cỏc kiểu dữ liệu trong ngụn ngữ C# chia làm hai loại, kiểu dữ

liệu xõy dựng sẵn và kiểu dữ liệu do người dựng định nghĩa. C# cũng

phõn loại cỏc kiểu dữ liệu thành hai loại: kiểu dữ liệu giỏ trị (value data

type), và kiểu dữ liệu tham chiếu (reference data type). Việc phõn chia

này do sự khỏc nhau khi lưu kiểu dữ liệu giỏ trị và kiểu dữ liệu tham

chiếu trong bộ nhớ. Biến kiểu dữ liệu giỏ trị lưu giữ giỏ trị của nú trong

bộ nhớ tĩnh (stack). Trong khi đú biến kiểu tham chiếu, khụng chứa đối tượng thuộc kiểu này, mà lưu một địa chỉ hay tham chiếu đến đối tượng trong bộ nhớ stack, cũn đối tượng thật sự lưu trong bộ nhớ động

(heap). Nếu chỳng ta cú một đối tượng cú kớch thước rất lớn thỡ việc lưu giữ chỳng trờn bộ nhớ heap rất cú ớch. Tất cả cỏc kiểu dữ liệu cơ sở

xõy dựng sẵn là kiểu dữ liệu giỏ trị. Kiểu chuỗi và cỏc lớp định nghĩa

sẵn là kiểu dữ liệu tham chiếu. Và tất cả cỏc kiểu do người dựng định

nghĩa ngoại trừ kiểu cấu trỳc, liệt kờ đều là kiểu dữ liệu tham chiếu.

Ngoài ra C# cũng hỗ trợ kiểu con trỏ như C++, nhưng ớt khi được sử

dụng, khi làm việc với những đoạn mó lệnh cú sử dụng kiểu con trỏ, sẽ được đỏnh dấu khụng an toàn (unsafe).

2.2.1.1. Kiểu dữ liệu giỏ trị

Bao gồm cỏc kiểu dữ liệu cơ sở định nghĩa sẵn, kiểu liệt kờ và kiểu cấu trỳc. Kiểu dữ liệu cấu trỳc người dựng định nghĩa sẽ được

tỡm hiểu trong chương kế tiếp cựng với kiểu lớp và kiểu tham chiếu phương thức (delegate).

Kiểu cơ sở

Ngụn ngữ C# đưa ra cỏc kiểu dữ liệu cơ sở rất hữu dụng, mỗi

ỏnh xạ cỏc kiểu dữ liệu cơ sở của C# đến cỏc kiểu dữ liệu của .NET

sẽ đảm bảo cỏc đối tượng được tạo ra trong C# cú thể được sử dụng đồng thời với cỏc đối tượng được tạo bởi bất kỳ ngụn ngữ khỏc được

biờn dịch bởi .NET.

Cỏc kiểu dữ liệu cơ sở là kiểu dữ liệu struct xõy dựng sẵn chứa

nhiều thuộc tớnh và phương thức cần thiết, trong đú phương thức thường dựng là: Parse(string s): chuyển chuỗi s thành kiểu struct tương ứng

Vớ dụ: float a = float.Parse(s);

Bảng 2.1. Kiểu dữ liệu cơ sở

Kiểu Mụ tả Độ lớn Kiểu .Net Phạm vi

bool Kiểu logic 1 bit Boolean true, false char Ký tự

Unicode

16 bits Char

0 … 65535 byte Số nguyờn 8 bits Byte 0 … 255 sbyte Số nguyờn 8 bits SByte -128 … 127

short Số nguyờn 16 bits Int16 -32768 … 32767 ushort Số nguyờn 16 bits UInt16 0 ... 65535

int Số nguyờn 32 bits Int32 -2147483648 ... 2147483647 uint Số nguyờn 32 bits UInt32 0 ... 4294967295

long Số nguyờn 64 bits Int64 -9223372036854775808 … 9223372036854775807 ulong Số nguyờn 64 bits UInt64 0 ... 18446744073709551615

float Số thực 32 bits Single -3.402823E38 ... 3.402823E38 double Số thực 64 bits Double -1.79769313486232E308 …

1.79769313486232E308

decimal Số thực 64 bits Decimal -79228162514264337593543950335 …

Kiểu liệt kờ

Kiểu liệt kờ đơn giản là tập hợp cỏc tờn hằng cú giỏ trị khụng thay đổi, giỳp bạn tổ chức dữ liệu khoa học hơn, mó trong sỏng dễ

hiểu hơn. C# cung cấp rất nhiều kiểu liệt kờ định nghĩa sẵn, sẽ được đề cập đến trong cỏc chương kế tiếp.

Để định nghĩa một kiểu liệt kờ ta thực hiện theo cỳ phỏp sau:

enum TờnKiểuLiệtKờ [KiểuCơSở]

{

//Danh sỏch cỏc thành phần liệt kờ };

Một kiểu liệt kờ bắt đầu với từ khúa enum, tiếp sau là một định

danh cho kiểu liệt kờ.

Danh sỏch liệt kờ là cỏc hằng được gỏn giỏ trị và mỗi thành phần phải phõn cỏch nhau dấu phẩy. Nếu chỳng ta khụng khởi tạo giỏ

trị cho cỏc thành phần này thỡ chỳng sẽ nhận cỏc giỏ trị liờn tiếp bắt đầu từ 0. Mỗi tờn hằng trong kiểu liệt kờ thuộc bất kỳ một kiểu dữ

liệu cơ sở nguyờn nào như int, short, long..., ngoại trừ kiểu ký tự.

Kiểu cơ sở chớnh là kiểu khai bỏo cho cỏc thành phần liệt kờ. Nếu bỏ qua thành phần này thỡ trỡnh biờn dịch sẽ gỏn mặc định là kiểu nguyờn int. Khi đú, mỗi thành phần trong kiểu liệt kờ tương ứng với

một giỏ trị số nguyờn.

Khi truy xuất giỏ trị của danh sỏch liệt kờ, cần phải chuyển kiểu

một cỏch tường minh.

Vớ dụ: using System; class Example {

enum VisibleType {None = 0, Hidden = 2, Visible = 4}; // In ra tờn và giỏ trị thành phần của enum

static void Main(string[] args) {

VisibleType visEnum = VisibleType.Hidden; Console.WriteLine(visEnum.ToString()); Console.WriteLine((int) VisibleType.Hidden); }

}

Kiểu Nullable (Nullable type)

C# 2.0 cung cấp kiểu struct System.Nullable<T> thuộc khụng

gian tờn System cho phộp kiểu giỏ trị cú giỏ trị null. Tất cả kiểu dữ

liệu cú giỏ trị null tương ứng. Một kiểu Nullable cú thể biểu diễn một

dóy giỏ trị của kiểu tương ứng và giỏ trị null. Chẳng hạn như biến

kiểu Nullable<Int32> cú thể gỏn giỏ trị từ -2147483648 đến

2147483647 hay giỏ trị null.

Kiểu Nullable khai bỏo cho cỏc biến kiểu giỏ trị mà cú thể gỏn

giỏ trị null. Bạn khụng thể tạo một kiểu Nullable dựa trờn kiểu tham

chiếu. Kiểu tham chiếu đó hỗ trợ giỏ trị null là tham chiếu rỗng.

Cỳ phỏp T? sử dụng để khai bỏo kiểu Nullable<T>, trong đú T

là kiểu giỏ trị. Phộp toỏn ?? để gỏn giỏ trị mặc định của biến kiểu

Nullable cú giỏ trị là null, cho biến khụng cú kiểu Nullable.

Vớ dụ:

int? x = null; //x khụng chứa bất kỳ giỏ trị

int y = x ?? -1; //x chứa giỏ trị 0

int? a = default(int); //a chứa giỏ trị 0

int? b = default(int?); //b khụng chứa bất kỳ giỏ trị

Kiểu Nullable cung cấp thuộc tớnh và phương thức sau:

 Value: Trả về giỏ trị của biến và phỏt sinh ngoại lệ

InvalidOperationException nếu biến kiểu Nullable khụng

chứa bất kỳ giỏ trị

Vớ dụ:

int c = a.Value; //trả về 0

 HasValue: Trả về true nếu biến kiểu Nullable cú giỏ trị, ngược lại trả về false

Vớ dụ:

bool e = a.HasValue; //trả về true

bool f = b.HasValue; //trả về false

if (y.HasValue) Console.Write(x.Value);

 GetValueOrDefault(): nếu biến kiểu Nullable cú giỏ trị, trả về

giỏ trị, ngược lại trả về giỏ trị mặc định của kiểu tương ứng

Vớ dụ:

int g = a.GetValueOrDefault(); //trả về 0

int h = b.GetValueOrDefault(); //trả về 0

2.2.1.2. Kiểu dữ liệu tham chiếu Kiểu chuỗi

Kiểu dữ liệu chuỗi (string hay String) là kiểu tham chiếu xõy

dựng sẵn, lưu giữ một dóy ký tự. Chuỗi trong C# là khụng thay đổi,

mỗi khi chuỗi thay đổi, một chuỗi mới được tạo ra để chứa chuỗi

kết quả.

Tạo một đối tượng chuỗi: Nhiều string được tạo từ cỏc hằng chuỗi. Khi trỡnh dịch bắt gặp một chuỗi ký tự bao giữa cặp nhỏy kộp,

Một phần của tài liệu Giáo trình lập trình windowns form với c net tập 1 TS lê trung hiếu, ths nguyễn thị minh thi (Trang 26)