Thứ Hai, 9 tháng 3, 2009

Mảng và các toán tử trong C#

Trong bài nảy chúng ta sẽ tìm hiểu các khái niệm về dữ liệu mảng và toán tử trong C#.

Mảng (Arrays)

Array là một cấu trúc dữ liệu cấu tạo bởi một số biến được gọi là những phần tử mảng. Tất cả các phần tử này đều thuộc một kiểu dữ liệu. Bạn có thể truy xuất phần tử thông qua chỉ số (index). Trong C# chỉ số này bắt đầu bằng 0.

Có nhiều loại mảng (array): mảng một chiều, mảng nhiều chiều.

Cú pháp :

type[ ] array-name;

thí dụ:

int[] myIntegers; // mảng kiểu số nguyên

string[] myString ; // mảng kiểu chuổi chữ

Bạn khai báo mảng có chiều dài xác định với từ khoá new như sau:

// Tạo mảng có 32 phần tử kiểu int

int[] myIntegers = new int[32];

integers[0] = 35;// phần tử đầu tiên có giá trị 35

integers[31] = 432;// phần tử 32 có giá trị 432

Bạn cũng có thể khai báo như sau:

int[] integers;

integers = new int[32];

string[] myArray = {"first element", "second element", "third element"};

Làm việc với mảng

Ta có thể tìm được chiều dài của mảng sau nhờ vào thuộc tính Length thí dụ sau :

int arrayLength = integers.Length

Nếu các thành phần của mảng là kiểu định nghĩa trước (predefined types), ta có thể sắp xếp tăng dần vào phương thức gọi là static Array.Sort() method:

Array.Sort(myArray);

Cuối cùng chúng ta có thể đảo ngược mảng đã có nhờ vào the static Reverse() method:

Array.Reverse(myArray);

string[] artists = {"Leonardo", "Monet", "Van Gogh", "Klee"};

Array.Sort(artists);

Array.Reverse(artists);

foreach (string name in artists)

{

Console.WriteLine(name);

}

Mảng nhiều chiều

Cú pháp :

type[,] array-name;

Thí dụ muốn khai báo một mảng hai chiều gồm hai hàng ba cột với phần tử kiểu nguyên :

int[,] myRectArray = new int[2,3];

Bạn có thể khởi gán mảng xem các ví dụ sau về mảng nhiều chiều:

int[,] myRectArray = new int[,]{ {1,2},{3,4},{5,6},{7,8}}; mảng 4 hàng 2 cột

string[,] beatleName = { {"Lennon","John"},

{"McCartney","Paul"},

{"Harrison","George"},

{"Starkey","Richard"} };

chúng ta có thể sử dụng :

string[,,] my3DArray;

double [, ] matrix = new double[10, 10];

for (int i = 0; i < 10; i++)

{

for (int j=0; j < 10; j++)

matrix[i, j] = 4;

}

Mảng jagged

Một loại thứ 2 của mảng nhiều chiều trong C# là Jagged array. Jagged là một mảng mà mỗi phần tử là một mảng với kích thước khác nhau. Những mảng con này phải đuợc khai báo từng mảng con một.

Thí dụ sau đây khai báo một mảng jagged hai chiều nghĩa là hai cặp [], gồm 3 hàng mỗi hàng là một mảng một chiều:

int[][] a = new int[3][];
a[0] = new int[4];
a[1] = new int[3];
a[2] = new int[1];

Khi dùng mảng jagged ta nên sử dụng phương thức GetLength() để xác định số lượng cột của mảng. Thí dụ sau nói lên điều này:

using System;

namespace Wrox.ProCSharp.Basics

{

class MainEntryPoint

{

static void Main()

{

// Declare a two-dimension jagged array of authors' names

string[][] novelists = new string[3][];

novelists[0] = new string[] {

"Fyodor", "Mikhailovich", "Dostoyevsky"};

novelists[1] = new string[] {

"James", "Augustine", "Aloysius", "Joyce"};

novelists[2] = new string[] {

"Miguel", "de Cervantes", "Saavedra"};

// Loop through each novelist in the array

int i;

for (i = 0; i < novelists.GetLength(0); i++)

{

// Loop through each name for the novelist

int j;

for (j = 0; j < novelists[i].GetLength(0); j++)

{

// Display current part of name

Console.Write(novelists[i][j] + " ");

}

// Start a new line for the next novelist

Console.Write("\n");

}

}

}

}

Toán tử trong C#

Phép tính


+ - * / %

Logic


& | ^ ~ && || !

Cộng chuỗi


+

Tăng và giảm


++ --

Dịch bit


<< >>

So sánh


== != < > <= >=

Gán


= += -= *= /= %= &= |= ^= <<= >>=

Truy cập member


.

Dùng để chỉ index


[]

Cast


()

Conditional (the Ternary Operator)


?:

Tạo đối tượng


new

Thông tin về kiểu


sizeof ,is, typeof, as



Câu sau đây có nghĩa là x bằng với 3 (gán 3 vào biến x):

x = 3;

Nếu chúng ta muốn so sánh x với một giá trị chúng ta sử dụng kí hiệu sau ==:

if (x == 3)

Toán tử “Shortcuts”

Bảng dưới đây trình bày một danh sách đầy đủ của shortcut operators có giá trị trong C#:

Shortcut Operator


Tương đương

x++, ++x


x = x + 1

x--, --x


x = x - 1

x += y


x = x + y

x -= y


x = x – y

x *= y


x = x * y

x /= y


x = x / y

x %= y


x = x % y

x >>= y


x = x >> y

x <<= y


x = x << y

x &= y


x = x & y

x |= y


x = x | y

x ^= y


x = x ^ y

Thí dụ :

int x = 5;
if (++x == 6)
{
Console.WriteLine("This will execute");
}
if (x++ == 7)
{
Console.WriteLine("This won't");
}

x += 5;

x = x + 5;

is

int i = 10;

if (i is object)

{

Console.WriteLine("i is an object");

}

sizeof

string s = "A string";

unsafe

{

Console.WriteLine(sizeof(int));

}

Không có nhận xét nào: