ตัวดำเนินการ
ตัวดำเนินการ คือเครื่องหมายที่ใช้เพื่อให้ทำงานกับตัวแปรและค่าคงที่เพื่อสร้าง expression ในการเขียนโปรแกรม ในภาษา C#มีตัวดำเนินการประเภทต่างๆ ที่คุณจะต้องรู้จักก่อนที่จะเขียนโปรแกรม ข้างล่างนี้เป็นรายการของประเภทตัวดำเนินการที่คุณจะได้เรียนในบทเรียนนี้
- Assignment operator
- Arithmetic operators
- Compound assignment
- Increment and decrement
- Relational and comparison operators
- Logical operators
- Conditional ternary operator
- Bitwise operators
- Explicit type casting operator
Assignment operator
assignment operator หรือตัวดำเนินการกำหนดค่าใช้เคื่องหมายเท่ากับ =
มันใช้สำหรับกำหนดค่าให้กับตัวแปรในภาษา C# ยกตัวอย่างเช่น:
float weight = 58.3f;
int y = -3;
int x = y;
string name = "Marcus";
ในตัวอย่างด้านบน เราได้ใช้ตัวดำเนินการกำหนดค่าเพื่อกับหนดค่าให้กับตัวแปรซึ่งมีประเภทข้อมูลแบบต่างๆ
Arithmetic operators
ในภาษา C# มีตัวดำเนินการทางคณิตศาสตร์เพื่อใช้ในการดำเนินการในคณิตศาสตร์ต่างๆ เช่น การบวก การลบ การคูณ การหาร และอื่นๆ ในการเขียนโปรแกรม เราเรียกตัวดำเนินการเหล่านี้ว่า operand เพื่อใช่จัดการกับข้อมูลที่เรามี
ข้างล่างนี้เป็นตารางของตัวดำเนินการทางคณิตศาสตร์ในภาษา C#
Symbol | Name | Example |
---|---|---|
+ | Addition | c = a + b |
- | Subtraction | c = a - b |
* | Multiplication | c = a * b |
/ | Division | c = a / b |
% | Modulo | c = a % b |
มาดูตัวอย่างในการใช้ตัวดำเนินการทางคณิตศาสตร์เบื้องต้นในภาษา C#
using System;
class ArithmeticOperators
{
static void Main(string[] args)
{
int a = 10;
int b = 3;
float c = 2.0f;
Console.WriteLine("a + b = " + (a + b));
Console.WriteLine("a - b = " + (a - b));
Console.WriteLine("a * c = " + (a * c));
Console.WriteLine("a / c = " + (a / c));
Console.WriteLine("a % c = " + (a % c));
}
}
ในตัวอย่าง เราได้สร้างตัวแปรสองตัวสำหรับเห็นค่าตัวเลขจำนวนเต็ม (integer) และอีกหนึ่งตัวเพื่อเก็บจำนวนจริง (floating point) เราได้ใช้ตัวดำเนินการทางคณิตศาสตร์ สำหรับการบวก การลบ การคูณ การหาร และมอดดูโล (การหารเอาเศษ)
และนี่เป็นผลลัพธ์เมื่อโปรแกรมได้รัน
a + b = 13
a - b = 7
a * c = 20
a / c = 5
a % c = 0
Compound assignment
Compound assignment operators เป็นตัวดำเนินการใช้สำหรับปรับปรุงหรืออัพเดทค่าของตัวแปร โดยมีข้อกำหนดว่าข้อมูลใหม่นั้นต้องมีความสัมพันธ์กับข้อมูลเดิม เช่น เพิ่มค่าของ x ไปอีก 10 กล่าวอีกนัยหนึ่งมันเป็นรูปแบบสั้นของ arithmetic operators
ข้างล่างนี้เป็นรายการของ compound assignment operators ในภาษา C# ที่คุณต้องทราบ
Operator | Example | Equivalent to |
---|---|---|
+= | a += 2; | a = a + 2 |
-= | a -= 2; | a = a - 2 |
*= | a *= 2; | a = a * 2 |
/= | a /= 2; | a= a / 2 |
%= | a %= 2; | a = a % 2 |
>>= | a >>= 2; | a = a >> 2 |
<<= | a <<= 2 | a = a << 2 |
&= | a & = 2; | a = a & 2 |
^= | a ^= 2; | a= a ^ 2 |
|= | a |= 2; | a = a | 2 |
มาดูตัวอย่างการใช้งาน
int money = 100;
money += 30; // equivalent to money = money + 30
money += 50; // equivalent to money = money + 50
ในตัวอย่าง เป็นการเพิ่มค่าให้กับตัวแปร money
มันมีค่าเหมือนกับคอมเม้นต์ทางด้านขวา
Increment และ decrement
Increment และ decrement เป็นตัวดำเนินการที่ใช้สำหรับเพิ่มค่าและลดค่าตามลำดับ ผลลัพธ์คือค่าของตัวแปรจะเพิ่มขึ้นหรือลดลง 1 เท่านั้น ซึ่งในตัวดำเนินการ increment และ decrement ก็จะแบ่งออกเป็น 2 แบบคือ prefix และ postfix และเครื่องหมายที่ใช้ในตัวดำเนินการนี้คือ ++
และ --
Type | Operator | Example | Equivalent to |
---|---|---|---|
Prefix | ++ | ++a | a = a + 1 |
Postfix | ++ | a++ | a = a + 1 |
Prefix | -- | --a | a = a - 1 |
Postfix | -- | a-- | a = a - 1 |
Prefix เป็นการใส่เครื่องหมายไว้หน้าของตัวแปร การทำงานค่าของตัวแปรจะเพิ่มก่อนที่จะทำงานคำสั่งปัจจุบัน ในขณะที่ postfix เป็นการใส่เครื่องหมายทางด้านหลัง การทำงานค่าของตัวแปรจะถูกเพิ่มขึ้นหลังจากที่คำสั่งปัจจุบันทำงานเสร็จสิ้นแล้ว
มาดูตัวอย่างเพื่อให้คุณเข้าใจมันได้มากขึ้น
using System;
class IncrementDecrement
{
static void Main(string[] args)
{
int a = 5;
int b = 5;
Console.WriteLine("a = {0}", ++a);
Console.WriteLine("b = {0}", b++);
// now b is 6
}
}
และนี่เป็นผลลัพธ์ชองโปรแกรม
a = 6
b = 5
จากตัวอย่างข้างบน เรามีตัวแปรสองตัวคือ a และ b และได้กำหนดค่าเริ่มต้นให้กับทั้งสองเป็น 5 ตัวแปร a นั้นจะแสดงผลออกมาเป็น 6 เพราะว่าการทำงานของ increment แบบ postfix จะเพิ่มค่าก่อน ส่วน b นั้นยังคงเป็น 5 เพราะจะต้องเพิ่มค่าหลังจากการทำงานของบรรทัดนั้นเสร็จสิ้น
Relational และ comparison operators
ตัวดำเนินการเปรียบเทียบ (comparison) และความสัมพันธ์ (relational) ถูกใช้ในการสร้าง expression กับตัวแปรและค่าคงที่ โดยผลลัพธ์ของ expression จะมีแค่เพียง true
หรือ false
เท่านั้น มันมักจะใช้เพื่อสร้างเงื่อนไขเพื่อใช้กับคำสั่งในการเปรียบเทีบล เช่น if else, switch, while, do-while, for เป็นต้น
นี่เป็นตารางของ relational และ comparison operators ในภาษา C#
Operater | Example | Result |
---|---|---|
== | a == b | true if `a` equal to `b`, otherwise false |
!= | a != b | true if `a` not equal to `b`, otherwise false |
< | a < b | true if `a` less than `b`, otherwise false |
> | a > b | true if `a` greater than `b`, otherwise false |
<= | a <= b | true if `a` less than or equal to `b`, otherwise false |
>= | a >= b | true if `a` greater than or equal to `b`, otherwise false |
ต่อไปมาดูตัวอย่างในการใช้ตัวดำเนินการเปรียบเทียบ
int n = 10;
if (n % 2 == 0) {
Console.WriteLine("n is even number.");
}
int x = 6, y = 2;
if (x < y) {
Console.WriteLine("x is less than y");
}
และนี่เป็นผลลัพธ์เมื่อได้รันโปรแกรม
n is even number.
จากตัวอย่างข้างบน เราได้ใช้ตัวดำเนินการเปรียบเทียบ ==
เพื่อตรวจสอบถ้า n
นั้นเป็นจำนวนคู่ แล้วโปรแกรมก็จะทำงานในบล็อคคำสั่งของ IF ต่อมา เราได้ใช้ตัวดำเนินการเปรียบเทียบน้อยกว่า <
เพื่อตรวจสอบว่าถ้า x
น้อยกว่า y
เนื่องจาก x
ไม่ได้น้อยกว่า y
ดังนั้นโปรแกรมจึงไม่ทำงานในบล็อคคำสั่งของ IF
Logical operators
ตัวดำเนินการเชิงตรรกะ (logical operators) มักจะใช้ในการตรวจสอบกับค่าของ boolean โดยปกติตัวดำเนินการเปรียบเทียบจะให้ผลลัพธ์เป็น boolean อยู่แล้ว ในภาษา C# มีตัวดำเนินการเชิงตรรกะอยู่ 3 แบบ
นี่เป็นตารางของ logical operators
Symbol | Name | Example |
---|---|---|
! | Not | ! (n==1) |
&& | And | a == 1 && b == 1 |
|| | Or | a == 1 || b == 1 |
มาดูตัวอย่างการใช้ตัวดำเนินการเชิงตรรกะ
using System;
class LogicalOperators
{
static void Main(string[] args)
{
bool a = (3 == 4);
bool b = (3 != 4);
bool c = (3 < 4);
bool d = a && c;
bool e = !d;
Console.WriteLine("a = " + a);
Console.WriteLine("b = " + b);
Console.WriteLine("c = " + c);
Console.WriteLine("d = " + d);
Console.WriteLine("e = " + e);
}
}
จากตัวอย่างด้านบนเราได้สร้างตัวแปร boolean สำหรับเก็บค่าจาก expression ที่ถูกประเมินผลกับโอเปอแรน ตัวดำเนินการเปรียบเทียบและตัวดำเนินการตรรกะ ที่มันจะ return ค่าสุดท้ายคือ True หรือ False
a = False
b = True
c = True
d = False
e = True
และนี่เป็นผลลัพธ์ของโปรแกรม
ตัวดำเนินการตรรกะโดยปกติมักจะใช้กับคำสั่งเงื่อนไขหรือคำสั่งวนซ้ำ ดังตัวอย่างข้างล่างนี้
using System;
class LogicalOperators
{
static void Main(string[] args)
{
int age = 20;
int money = 100;
if(age >= 18 && money >= 120) {
Console.WriteLine("You can buy a game.");
}
if(age >= 18 || money >= 500) {
Console.WriteLine("You can buy a movie.");
}
}
}
ในตัวอย่าง เราได้สร้างเงื่อนไขเพิ่มเติมโดยการใช้ตัวดำเนินการตรรกะ เราใช้ตัวดำเนินการ "and" &&
นั่นหมายความว่าแต่ละ expression ย่อยต้องมีค่าเป็นจริง สำหรับการซื้อเกมผู้ใช้ต้องมีอายุตั้งแต่ 18 ปีขึนไปและต้องมีเงินตั้งแต่ 120 ขึ้นไป สำหรับการซื้อภาพยนตร์ เราได้ใช้ตัวดำเนินการ "or" ||
โดยเราต้องการเพียงแค่เงื่อนไขใดเงื่อนไขหนึ่งเท่านั้นที่เป็นจริง หรือทั้งสอง
Conditional ternary operator (?)
ternary operator นั้นจะใช้เครื่องหมาย ? มันถูกใช้ในการประเมินค่าของ expression และจะให้ผลลัพธ์เป็นค่าแรกถ้าหาก expression เป็น true และค่าที่สองถ้า expression เป็น false โดยค่าทั้งสองต้องเป้นประเภทหรือชนิดข้อมูลชนิดเดียวกัน โดยมันมีรูปแบบการใช้งานดังนี้
expression ? value1 : value2;
String cc = "NY";
Console.WriteLine(cc == "NY" ? "New York" : "Other states");
ในตัวอย่าง จากคำสั่ง cc == "NY"
นั้นคือ expression ที่เราสร้างขึ้นจาก ternary operator และ "New York" นั้นจะผลเป็รผลลัพธ์เมื่อ expression นี้เป็น true และค่าที่สองคือ "Other states" จะเป็นผลลัพธ์เมื่อ expression เป็น false โปรดจำไว้ว่าค่าทั้งสองจะต้องเป็นประเภทข้อมูลเดียวกันเสมอ
New York
และนี่เป็นผลลัพธ์ของโปรแกรม มันจะแสดง "New York" เพราะว่า expression ของเราเป็น true
Bitwise operators
ในภาษา C# จะมีตัวดำเนินการระดับบิท (bitwise operators) โดยจะทำงานกับค่าของบิท ในรูปแบบต่างๆ ของข้อมูลที่เก็บไว้ในตัวแปร
และนี่เป็นตารางของ Bitwise operators ในภาษา C#
Symbol | Description |
---|---|
& | Bitwise AND |
| | Bitwise inclusive OR |
^ | Bitwise exclusive OR |
~ | bit inversion |
<< | Shift bits left |
>> | Shift bits right |
Explicit type casting operator
Explicit type casting ในภาษา C# นั้นหมายความว่าเป็นการแปลงจากประเภทข้อมูลชนิดหนึ่งไปเป็นประเภทข้อมูลอีกชนิดหนึ่ง Explicit type casting จะเกิดขึ้นอัตโนมติเมื่อ literals ให้กับตัวแปรหรือค่าคงที่ หรือสามารถเกิดขึ้นโดยการใช้วิธีการของ c-like ซึ่งสืบทอดมาจาดภาษา C
int a = 10.5; // ตัวเลขนี้จะแปลงไปเป็น Integer อัตโนมัติ
int b = (int) 89.23; // c-like
float c = (int) b;
ในบทเรียนนี้ คุณได้เรียนรู้และทำความรู้จักกับภาษา C#และได้ดูวิธีการใช้งานในเบื้องต้น