- Biến và kiểu dữ liệu
- Xuất dữ liệu ra màn hình Console
- Nhập dữ liệu từ dòng lệnh
- Khai báo biến kiểu ngầm định
- Hằng số trong C#
Biến và kiểu dữ liệu cơ bản C#
Tạo dự án mẫu CS02VariablesConstantsIO để thực hành
Trước tiên để thực hành gõ các lệnh tạo dự án mới đặt tên tên là
CS002_VariablesConstantsIO
rồi sau đó mở nó ra bằng VSC
mkdir CS002_VariablesConstantsIO cd CS002_VariablesConstantsIO/ dotnet new console code .
Khi mở thư mục dự án bằng Visual Studio Code (VSC) (
có thể dùng lệnh code
lệnh này có là do thiết lập VSC),
trong VSC chọn menu View > Command Pallet ...
gõ vào .NET
- từ menu đổ xuống chọn mục: NET: Generate Assets for Build and Debug
- để VSC thêm vào dự án file cấu hình build và chạy ứng dụng (trong thư mục .vscode
).
Như phần Giới thiệu C#,
bạn mở file Program.cs
và bắt đầu viết code từ hàm Main
trong file này.
Lưu ý
Để khi nhấn CTRL + F5 hay F5 chạy chương trình nó nhận tương tác tốt từ terminal thay
có thể thay đổi cấu hình khởi chạy dự án của VSC. Hãy mở file ./vscode/launch.json
,
tìm đến dòng "console": "internalTerminal"
hãy thay bằng
"console": "integratedTerminal"
hoặc "console": "externalTerminal"
(mở của sổ Terminal mới khi chay)
Biến trong C#
Biến dùng để lưu các giá trị dữ liệu vào bộ nhớ, giá trị lưu trữ vào đó có thể đọc và thay đổi bởi chương trình C# khi nó chạy. Để dùng biến, trước tiên phải đặt một cái tên cho biến và chỉ ra biến đó sẽ lưu loại dữ liệu nào (số nguyên - int, số thực double, chuỗi - string ...), việc này gọi là khai báo biến
Khi đặt tên biến C# cần lưu ý: tên biến có thể chứa chữ
,
số
và ký tự _
nhưng ký tự đầu tiên của tên biến không được dùng số
,
tên biến trong C# có phân biệt chữ hoa chữ thường.
Hãy đặt tên biến sao cho nó ngắn gọn nhưng gọi nhớ đến thông tin dữ liệu biến đó lưu trữ.
Ví dụ như studentName
, studentAge
... sẽ hay hơn abc
, xyz
...
Ngoài ra cũng không đặt tên biến trùng với những từ khóa dành riêng cho câu lệnh C#
Các từ khóa trong C#
abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long namespace new null object operator out out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending descending dynamic from get global group into join let orderby partial remove select set
Khai báo biến để khai báo biến bạn cần chỉ ra kiểu dữ liệu của biến (như int, float, string ... sẽ tìm hiểu ngay sau đây) và tên biến, ví dụ:
//Khai báo biến có tên studentName, lưu loại dữ liệu chuỗi (string) string studentName;
Ở trên bạn đã khai báo một biến có tên là studentName
với kiểu dữ liệu là string
, dòng khai báo đó kết thúc bởi ký hiệu ;
là ký hiệu kết thúc câu lệnh C#
Câu lệnh C# là một tác vụ nào đó được chương trình C#, mặc định mỗi câu lệnh C# kết thúc bởi ký hiệu ;
Gán giá trị cho biến: ở trên, biến studentName
đã được khai báo,
nhưng nó chưa gán giá trị nào cả (nó chứa giá trị mặc định - tùy kiểu dữ liệu, như string là null, int là 0 ...),
trước khi sử dụng biến - bạn cần gán giá trị cho biến, bạn có thể gán giá trị ngay tại dòng khai báo biến
hoặc sử dụng toán tử gán =
trước khi biến được sử dụng.
// Khai báo biến và gán ngay giá trị lưu vào biến string address = "Hà Nội, Việt Nam"; // Khai báo biến, sau đó trước khi sử dụng gán giá trị cho biến int studentAge; studentAge = 22;
Kiểu dữ liệu C# định nghĩa sẵn
Kiểu dữ liệu C# cơ bản, định nghĩa sẵn (buil-in) trong C# cơ bản có:
int
kiểu số nguyên (có dấu, dùng 32 bit biểu diễn, từ -2,147,483,648 đến 2,147,483,647)sbyte
kiểu số nguyên (có dấu, dùng 8 bit biểu diễn, từ -128 đến 127)byte
kiểu số nguyên (không dấu, dùng 8 bit biểu diễn, từ 0 đến 255)short
kiểu số nguyên (có dấu, dùng 16 bit biểu diễn, từ -32,768 đến 32,767)ushort
kiểu số nguyên (không dấu, dùng 16 bit biểu diễn, từ 0 đến 65,535)long
kiểu số nguyên (có dấu, dùng 64 bit biểu diễn, từ -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807)ulong
kiểu số nguyên (không dấu, dùng 64 bit biểu diễn, từ 0 đến 18,446,744,073,709,551,615)float
số thực chấm động (dùng 32 bit biểu diễn phù hợp số có bảy chữ số, độ chính xác số dấu chấm động 1.5 × 10−45 đến 3.4 × 1038)double
số thực chấm động (dùng 64 bit biểu diễn)decimal
số thực chấm động (dùng 128 bit biểu diễn)char
một ký tự (dùng 16 bit biểu diễn ký tự Unicode)bool
kiểu logic (chỉ nhận giá trịfalse
hoặctrue
)string
chuỗi (xâu) ký tự (tập hợp các ký tự theo thứ tự - một văn bản text)object
đối tượng, biểu diễn các đối tượng C#, nó là kiểu cơ sở - mọi đối tượng C# đều kế thừa từ kiểu này.
Ví dụ khai báo biến sử dụng vào kiểu dữ liệu trên.
int seconds = 60; //khai báo biến số nguyên double so_pi = 3.14; //khai báo biến số thực bool deltaIsSezo = true; //Khai báo biến logic char chooseAction = 'S' ; //Khai báo biến kiểu ký tự string msgResult = "Kết quả giải:" ; // khai báo biến chuỗi
Để biểu diễn giá trị của một chuỗi sử dụng ký hiệu ""
như "nội - dung - chuỗi"
, nhưng biểu diễn một ký tự dùng ký hiệu ''
như 'A'
Xuất dữ liệu ra màn hình Console
Thư viện lớp C# cung cấp sẵn một lớp tên là Console
(System.Console) trong đó có chữa một số phương thức tĩnh để nhập / xuất dữ liệu với màn hình dòng lệnh terminal. Một số phương thức bạn có thể sử dụng ngay trong việc in dữ liệu đó là:
Console.Write(value)
- invalue
ra màn hình, nhưng không xuống dòng mới - value có thể là một số, chữ, chuỗi ...Console.WriteLine(value)
- in value ra màn hình, sau đó xuống dòngConsole.ForegroundColor
- thuộc tính để gán màu chữ xuất ra, nó có thể gán các màu nhưConsoleColor.Red
,ConsoleColor.Green
,ConsoleColor.White
...Console.ResetColor()
- đưa Console về màu mặc định
Ví dụ:
Console.WriteLine(); //Xuống dòng Console.WriteLine(); //Xuống dòng Console.ForegroundColor = ConsoleColor.DarkMagenta; //Đặt màu chữ Console.WriteLine("XIN CHÀO - CHƯƠNG TRÌNH NHẬP XUẤT DỮ LIỆU"); //In dòng chữ Console.ResetColor(); //Reset màu Console.Write("Giá trị biến so_pi là : "); //In dòng chữ Console.WriteLine(so_pi); //In giá trị biến Console.WriteLine(); //Xuống dòng
Chạy thử (CTRL + F5)
Bạn có thể dùng format string để tạo ra chuỗi in ra nhằm giảm thiểu dòng code.
int a = 123; double b = 567.123; Console.WriteLine("Biến a = {0}, biến b = {1}", a, b); //Xuất ra: Biến a = 123, biến b = 567.123
Trong chuỗi định dạng trên chỗ nào có ký hiệu {0} thì sẽ được thay thế bởi tham số thứ nhất a, và ký hiệu {1} thì thay bởi tham số thứ 2.
Ngoài ra cũng định dạng để chèn cả một biểu thức vào vị trí ấn định trong chuỗi,
nếu trước ký hiệu chuối điền ký tự $
, thì trong chuỗi chỗ nào muốn thay bằng biểu thức thì viết
biểu thực tại đó và bọc trong cặp {}
int a = 123; double b = 567.123; Console.WriteLine($"Biến a = {a}, biến b = {b} - tích là {a * b}"); //Xuất ra: Biến a = 123, biến b = 567.123 - tích là 69756.129
Nhập dữ liệu trong C#
Có hàm Console.ReadLine()
cho phép nhập dữ liệu cho đến khi nhấn Enter, hàm này trả về chuỗi mà người dùng nhập vào. Tương tự hàm Console.ReadKey()
trả về ngay thông tin phím bấm khi người dùng bấm, ở trường hợp này để lấy chữ mã người dùng bấm thì viết Console.ReadKey().KeyChar
string userLogin; Console.Write("Nhập username : "); userLogin = Console.ReadLine(); Console.WriteLine($"Tên nhập vào là: {userLogin}");
Chuyển kiểu dữ liệu
Mặc định hàm Console.ReadLine()
trả về string
nếu muốn chuỗi đó nhập xong chuyển thành các kiểu dữ liệu khác như int
, float
... thì cần các hàm chuyển kiểu, một số hàm đó là:
Convert.ToInt32(value)
chuyển value thành kiểuint
Convert.ToDouble(value)
chuyển value thành kiểudouble
Convert.ToBoolean(value)
chuyển value thành kiểubool
Console.Write("Nhập một số thức : "); // Nhập chuỗi - chuyển ngay chuỗi đó thành số thực double dinput = Convert.ToDouble(Console.ReadLine()); Console.WriteLine($"Số đã nhập là: {dinput}");
Khai báo biến kiểu ngầm định với var
Mặc định C# khi khai báo biến cần phải chỉ rõ một cách tường minh kiểu dữ liệu (int, float ...) của biến, ở ở các ví dụ trên. Để linh hoạt, C# còn có một cơ chế khai báo biến với từ khóa var
, mà không cần chỉ rõ ngay kiểu dữ liệu của biến mà kiểu của biến được xác định theo kiểu biểu thức gán vào biến ngay sau đó. (cũng có nghĩa là phải khởi tạo ngay). Ví dụ:
var bien1 = 3.14; // biến sẽ có kiểu double var bien2 = 3; // biến sẽ có kiểu int var bien3 = "Biến khai báo với var phải khởi tạo ngay"; // string var bien4 = (5 < 4); // bool
Hãy thử tạo breakpoint tại biến 1, tiến hành nhấn F5 để Debug, sau đó Step Into F11 qua từng dòng để thấy thông tin thực sự các biến trên, bạn sẽ thấy kiểu dữ liệu của biến nó được xác định giống như biểu thức gán vào biến
Nếu dùng var
khai báo mà không khởi tạo sẽ lỗi; ví dụ var a;
sẽ lỗi nhưng var a = 123;
thì đúng chuẩn.
Sử dụng var
có ích giúp code ngắn gọn ở rất nhiều trường hợp với các kiểu dữ liệu phức tạp sau này.
Hằng số trong C#
Hằng số lưu trữ các giá trị mà không thay đổi được nữa, dùng từ khóa const
để khai báo hằng số (như khai báo, khởi tạo biến nhưng phía trước có từ khóa const)
const string MON = "THỨ HAI"; Console.WriteLine(MON);
Source code: CS002_VariablesConstantsIO (Git), hoặc tải ex002