Operator trong C# 

By 07/01/2021Tháng Sáu 10th, 2021C#, KIẾN THỨC LẬP TRÌNH

Trong phần này, chúng ta sẽ tìm hiểu về các loại toán tử (operator) trong ngôn ngữ lập trình C# và cách sử dụng chúng. 

Operator là các ký hiệu được sử dụng để thực hiện cách phép toán hạng (operand). Toán hạng có thể là biến và hằng (hoặc là biến hoặc hằng).

Ví dụ, trong 2+3, + là operator, + được sử dụng để thực hiện phép cộng. Trong khi 2 và 3 là toán hạng. 

Các toán tử thường được dùng để thao tác với các Variable và value trong một chương trình. C# hỗ trợ một số toán tử (được phân loại dựa trên loại hoạt động mà chúng thực hiện).

  • Assignment Operator (toán tử gán)
  • Arithmetic Operator (toán tử số học)
  • Relational Operator (toán tử quan hệ)
  • Logical Operator (toán tử logic)
  • Unary Operator (toán tử một ngôi)
  • Ternary Operator (toán tử ba ngôi)
  • Bitwise và Bit Shift Operator (toán tử thao tác và dịch chuyển bit)
  • Compound Assignment Operators (toán tử gán kép)

1. Assignment Operator cơ bản (Toán tử gán cơ bản)

Toán tử gán cơ bản (=) được dùng để gán giá trị cho các biến. Ví dụ: 

double x;

x = 50.05;

Ở đây, 50.05 được gán cho x.

Ví dụ 1: Assignment Operator cơ bản

using System;

 

namespace Operator

{

class AssignmentOperator

{

public static void Main(string[] args)

{

int firstNumber, secondNumber;

// Assigning a constant to variable

firstNumber = 10;

Console.WriteLine(“First Number = {0}”, firstNumber);

 

// Assigning a variable to another variable

secondNumber = firstNumber;

Console.WriteLine(“Second Number = {0}”, secondNumber);

}

}

}

 

Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:

First Number = 10

Second Number = 10

Đây là một ví dụ đơn giản thể hiện việc sử dụng assignment operator. 

Bạn có thể nhận thấy dấu ngoặc nhọn { } được sử dụng trong ví dụ. Chúng ta sẽ thảo luận về chúng trong phần string formatting. Hiện tại, bạn chỉ cần lưu ý rằng {0} được thay thế bằng variable đầu tiên theo sau chuỗi,{1} được thay thế bằng variable thứ hai và tương tự.

2. Arithmetic Operator (Toán tử số học)

Toán tử số họ được sử dụng để thực hiện các phép tính số học như cộng, trừ, nhân, chia,..

Ví dụ,

int x = 5;

int y = 10;

int z = x + y;// z = 15

 

Operator Tên của Operator  Ví dụ
+ Toán tử phép cộng 6 + 3 cho kết quả bằng 9
Toán tử phép trừ 10 – 6 cho kết quả bằng 4
* Toán tử phép nhân 4 * 2 cho kết quả bằng 8
/ Toán tử phép chia 10 / 5 cho kết quả bằng 2
% Toán tử phần trăm 16 % 3 cho kết quả bằng 1

Ví dụ 2: Arithmetic Operator

using System;

 

namespace Operator

{

class ArithmeticOperator

{

public static void Main(string[] args)

{

double firstNumber = 14.40, secondNumber = 4.60, result;

int num1 = 26, num2 = 4, rem;

 

// Addition operator

result = firstNumber + secondNumber;

Console.WriteLine(“{0} + {1} = {2}”, firstNumber, secondNumber, result);

 

// Subtraction operator

result = firstNumber – secondNumber;

Console.WriteLine(“{0} – {1} = {2}”, firstNumber, secondNumber, result);

 

// Multiplication operator

result = firstNumber * secondNumber;

Console.WriteLine(“{0} * {1} = {2}”, firstNumber, secondNumber, result);

 

// Division operator

result = firstNumber / secondNumber;

Console.WriteLine(“{0} / {1} = {2}”, firstNumber, secondNumber, result);

 

// Modulo operator

rem = num1 % num2;

Console.WriteLine(“{0} % {1} = {2}”, num1, num2, rem);

}

}

}

 

Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:

14.4 + 4.6 = 19

14.4 – 4.6 = 9.8

14.4 * 4.6 = 66.24

14.4 / 4.6 = 3.1304347826087

26 % 4 = 2

Ở trên là ví dụ về toán tử số học, các phép toán đã được tiến hành trong ví dụ trên.  Các biến có thể được thay thế bằng hằng số trong các câu lệnh. Ví dụ,

result = 4.5 + 2.7 ; // result will hold 7.2

result = firstNumber – 3.2; // result will hold 11.2

3. Relational Operator (Toán tử quan hệ)

Toán tử quan hệ được sử dụng để kiểm tra mối quan hệ giữa hai toán hạng. Nếu mối quan hệ đúng thì kết quả trả về là  true, ngược lại, kết quả sẽ là false.

Relational operator được sử dụng trong việc ra quyết định và vòng lặp (loop).

Operator Tên của Operator  Ví dụ
== Equal to/ bằng với 6 == 4 cho kết quả false
> Greater than/ lớn hơn 3 > -1 cho kết quả true
< Less than/ nhỏ hơn 5 < 3 cho kết quả false
>= Greater than or equal to/ lớn hơn hoặc bằng 4 >= 4 cho kết quả true
<= Less than or equal to/ nhỏ hơn hoặc bằng 5 <= 3 cho kết quả false
!= Not equal to/ không bằng 10 != 2 cho kết quả true

Ví dụ 3: Relational Operators

using System;

 

namespace Operator

{

class RelationalOperator

{

public static void Main(string[] args)

{

bool result;

int firstNumber = 10, secondNumber = 20;

 

result = (firstNumber==secondNumber);

Console.WriteLine(“{0} == {1} returns {2}”,firstNumber, secondNumber, result);

 

result = (firstNumber > secondNumber);

Console.WriteLine(“{0} > {1} returns {2}”,firstNumber, secondNumber, result);

 

result = (firstNumber < secondNumber);

Console.WriteLine(“{0} < {1} returns {2}”,firstNumber, secondNumber, result);

 

result = (firstNumber >= secondNumber);

Console.WriteLine(“{0} >= {1} returns {2}”,firstNumber, secondNumber, result);

 

result = (firstNumber <= secondNumber);

Console.WriteLine(“{0} <= {1} returns {2}”,firstNumber, secondNumber, result);

 

result = (firstNumber != secondNumber);

Console.WriteLine(“{0} != {1} returns {2}”,firstNumber, secondNumber, result);

}

}

}

 

Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:

10 == 20 returns False

10 > 20 returns False

10 < 20 returns True

10 >= 20 returns False

10 <= 20 returns True

10 != 20 returns True

4. Logical Operator (Toán tử Logic)

Toán tử logic được sử dụng để thực hiện các hoạt động logic như and, or. Logical operator hoạt động trên biểu thức Bool (truefalse) và trả về giá trị Bool. Chúng dùng trong việc ra quyết định và vòng lặp (loop).

Dưới đây là cách mà kết quả được đánh giá cho các toán tử logic ANDOR.

Toán hạng 1 Toán hạng 2 OR (||) AND (&&)
true true true true
true false true false
false true true false
false false false false

Nói một cách đơn giản, bảng trên có thể tóm tắt như sau:

  • Nếu một trong các toán hạng true, toán tử logic OR sẽ đánh giá nó là true.
  • Nếu một trong các toán hạng false, toán tử logic AND sẽ đánh giá nó là  false

Ví dụ 4: Logical Operator

using System;

 

namespace Operator

{

class LogicalOperator

{

public static void Main(string[] args)

{

bool result;

int firstNumber = 10, secondNumber = 20;

 

// OR operator

result = (firstNumber == secondNumber) || (firstNumber > 5);

Console.WriteLine(result);

 

// AND operator

result = (firstNumber == secondNumber) && (firstNumber > 5);

Console.WriteLine(result);

}

}

}

 

Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:

True

False

5. Unary Operator (Toán tử một ngôi)

Không giống như các toán tử khác, toán tử một ngôi hoạt động trên một toán hạng duy nhất. 

Operator Tên của Operator  Mô tả
+ Unary Plus/ Toán tử một ngôi cộng Để lại dấu hiệu của toán hạng như nó vốn có
Unary Minus/ Toán tử một ngôi trừ Đảo ngược dấu hiệu của toán hạng
++ Increment/ Toán tử một ngôi tăng Giá trị tăng thêm 1
Decrement/ Toán tử một ngôi giảm Giá trị giảm đi 1
! Logical Negation (Not)/Toán tử một ngôi phủ định logic Đảo ngược giá trị của boolean

Ví dụ 5: Unary Operator

using System;

 

namespace Operator

{

class UnaryOperator

{

public static void Main(string[] args)

{

int number = 10, result;

bool flag = true;

 

result = +number;

Console.WriteLine(“+number = “ + result);

 

result = -number;

Console.WriteLine(“-number = “ + result);

 

result = ++number;

Console.WriteLine(“++number = “ + result);

 

result = –number;

Console.WriteLine(“–number = “ + result);

 

Console.WriteLine(“!flag = “ + (!flag));

}

}

}

 

Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:

+number = 10

-number = -10

++number = 11

–number = 10

!flag = False

Các toán tử tăng (++)và toán tử giảm(–)có thể dùng như tiền tố và hậu tố. 

  • Sử dụng như tiền tố: Sự thay đổi giá trị của biến được nhìn thấy trên cùng một dòng.
  • Sử dụng như hậu tố: Sự thay đổi giá trị của biến được nhìn thấy trên dòng tiếp theo.

Điều này sẽ rõ ràng hơn trong ví dụ dưới đây

Ví dụ 6: Trước và sau Increment operator trongC#

using System;

 

namespace Operator

{

class UnaryOperator

{

public static void Main(string[] args)

{

int number = 10;

 

Console.WriteLine((number++));

Console.WriteLine((number));

 

Console.WriteLine((++number));

Console.WriteLine((number));

}

}

}

 

Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:

10

11

12

12

Bạn có thể thấy hiệu quả của việc sử dụng ++ như tiền và hậu tố trong ví dụ trên. Khi ++ được sử dụng sau toán hạng, giá trị được đánh giá đầu tiên. Sau đó nó được tăng thêm 1

Câu lệnh:

Console.WriteLine((number++));

In ra con số 10 thay vì 11 . Sau khi giá trị được in, giá trị của con số được tăng thêm 1.

Quá trình này bị đảo ngược khi ++ dùng như tiền tố (đặt phía sau number). Giá trị được tăng lên trước khi in. Vì thế câu lệnh:

Console.WriteLine((++number));

in ra con số 12.

Trường hợp tương tự xảy ra với toán tử giảm (–).

6. Ternary Operator (Toán tử ba ngôi)

Toán tử ba ngôi ? : hoạt động trên ba toán hạng. Nó là cách viết tắt của câu lệnh if-then-else. Ternary operator có thể được sử dụng như sau: variable = Condition? Expression1 : Expression2;

Toán tử ba ngôi hoạt động như sau:

  • Nếu biểu thức được nêu bởi Điều kiện là true, kết quả của Expression1 được gán cho biến
  • Nếu biểu thức false, kết quả của Expression2 sẽ được gán cho biến

Ví dụ 7: Ternary Operator

using System;

 

namespace Operator

{

class TernaryOperator

{

public static void Main(string[] args)

{

int number = 10;

string result;

 

result = (number % 2 == 0)? “Even Number” : “Odd Number”;

Console.WriteLine(“{0} is {1}”, number, result);

}

}

}

 

Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:

10 is Even Number

Để biết thêm về toán tử ba ngôi, hãy truy cập C# ternary operator.

7. Bitwise và Bit Shift Operator (Toán tử thao tác và dịch chuyển bit)

Toán tử thao tác và dịch chuyển bit được sử dụng để thực hiện thao tác xử lý bit.

Operator Tên của Operator 
~ Bitwise Complement/ Bitwise bổ sung
& Bitwise AND
| Bitwise OR
^ Bitwise Exclusive OR/ Bitwise độc quyền OR (Bitwise XOR)
<< Bitwise Left Shift/ Bitwise chuyển sang trái theo chiều bit
>> Bitwise Right Shift/ Bitwise chuyển sang phải theo chiều bit

Ví dụ 8: Bitwise và Bit Shift Operator

using System;

 

namespace Operator

{

class BitOperator

{

public static void Main(string[] args)

{

int firstNumber = 10;

int secondNumber = 20;

int result;

 

result = ~firstNumber;

Console.WriteLine(“~{0} = {1}”, firstNumber, result);

 

result = firstNumber & secondNumber;

Console.WriteLine(“{0} & {1} = {2}”, firstNumber,secondNumber, result);

 

result = firstNumber | secondNumber;

Console.WriteLine(“{0} | {1} = {2}”, firstNumber,secondNumber, result);

 

result = firstNumber ^ secondNumber;

Console.WriteLine(“{0} ^ {1} = {2}”, firstNumber,secondNumber, result);

 

result = firstNumber << 2;

Console.WriteLine(“{0} << 2 = {1}”, firstNumber, result);

 

result = firstNumber >> 2;

Console.WriteLine(“{0} >> 2 = {1}”, firstNumber, result);

}

}

}

 

Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:

~10 = -11

10 & 20 = 0

10 | 20 = 30

10 ^ 20 = 30

10 << 2 = 40

10 >> 2 = 2

Để biết thêm về toán tử thao tác và dịch chuyển bit, hãy truy cập C# Bitwise Operators

8. Compound Assignment Operator (Toán tử gán ghép)

Operator Tên của Operator  Ví dụ Tương đương với
+= Addition Assignment/ cộng và gán x += 5 x = x + 5
-= Subtraction Assignment/ trừ và gán x -= 5 x = x – 5
*= Multiplication Assignment/ nhân và gán x *= 5 x = x * 5
/= Division Assignment/ chia và gán x /= 5 x = x / 5
%= Modulo Assignment/ phần trăm và gán x %= 5 x = x % 5
&= Bitwise AND Assignment/ Bitwise AND và gán x &= 5 x = x & 5
|= Bitwise OR Assignment/ Bitwise OR và gán x |= 5 x = x | 5
^= Bitwise XOR Assignment/ Bitwise XOR and và gán x ^= 5 x = x ^ 5
<<= Left Shift Assignment/ Chuyển sang trái và gán x <<= 5 x = x << 5
>>= Right Shift Assignment/ chuyển sang phải và gán x >>= 5 x = x >> 5
=> Lambda Operator/ Toán tử Lambda x => x*x Returns x*x

Ví dụ 9: Compound Assignment Operator

using System;

 

namespace Operator

{

class BitOperator

{

public static void Main(string[] args)

{

int number = 10;

 

number += 5;

Console.WriteLine(number);

 

number -= 3;

Console.WriteLine(number);

 

number *= 2;

Console.WriteLine(number);

 

number /= 3;

Console.WriteLine(number);

 

number %= 3;

Console.WriteLine(number);

 

number &= 10;

Console.WriteLine(number);

 

number |= 14;

Console.WriteLine(number);

 

number ^= 12;

Console.WriteLine(number);

 

number <<= 2;

Console.WriteLine(number);

 

number >>= 3;

Console.WriteLine(number);

}

}

}

 

Khi chúng ta chạy chương trình, kết quả trả về màn hình sẽ là:

15

12

24

8

2

2

14

2

8

1

Chúng ta sẽ đi sâu vào phần Lambda operators trong những chương sau.

Để lại một câu trả lời