ตัวดำเนินการ

ตัวดำเนินการ คือเครื่องหมายที่ใช้เพื่อให้ทำงานกับตัวแปรและค่าคงที่เพื่อสร้าง 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#

SymbolNameExample
+Additionc = a + b
-Subtractionc = a - b
*Multiplicationc = a * b
/Divisionc = a / b
%Moduloc = 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# ที่คุณต้องทราบ

OperatorExampleEquivalent 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 <<= 2a = 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 และเครื่องหมายที่ใช้ในตัวดำเนินการนี้คือ ++ และ --

TypeOperatorExampleEquivalent to
Prefix++++aa = a + 1
Postfix++a++a = a + 1
Prefix----aa = 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#

OperaterExampleResult
==a == btrue if a equal to b, otherwise false
!=a != btrue if a not equal to b, otherwise false
<a < btrue if a less than b, otherwise false
>a > btrue if a greater than b, otherwise false
<=a <= btrue if a less than or equal to b, otherwise false
>=a >= btrue 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

SymbolNameExample
!Not! (n==1)
&&Anda == 1 && b == 1
||Ora == 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#

SymbolDescription
&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#และได้ดูวิธีการใช้งานในเบื้องต้น


บทความเกี่ยวกับ ตัวดำเนินการ

ตัวดำเนินการ ในภาษา C

ตัวดำเนินการจะถูกใช้กับตัวแปรและค่าคงที่ในการดำเนินการบางอย่าง เช่น การดำเนินการทางคณิตศาสตร์ ในภาษา C มีตัวดำเนินการประเภทต่างๆ ที่ทำหน้าที่แตกต่างกันไป ในบทนี...

ตัวดำเนินการ ในภาษา Java

ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับตัวดำเนินการในภาษา Java และการใช้งานตัวดำเนินการ ในภาษา Java มีตัวดำเนินการประเภทต่างๆ ดังนี้ String concatenating operator หรื...

ตัวดำเนินการ ในภาษา Visual Basic

ตัวดำเนินการ ใช้สำหรับจัดการกับตัวแปรและค่าคงที่ ยกตัวอย่างเช่น การกำหนดค่า การเปรียบเทียบข้อมูล ตัวดำเนินการในภาษา Visual Basic นั้นมีหลายรูปแบบ นี่เป็นตัวดำเน...

ตัวดำเนินการ ในภาษา C++

ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับตัวดำเนินการ (Operator) ในภาษา C++ ตัวดำเนินการถูกใช้เพื่อดำเนินการกับตัวแปรและค่าคงที่สำหรับการสร้าง Expression เพื่อทำงานโปรแ...

ตัวดำเนินการ ในภาษา Python

ตัวดำเนินการ (Operators) คือกลุ่มของเครื่องหมายหรือสัญลักษณ์ที่ใช้ทำงานเหมือนกับฟังก์ชัน แต่แตกต่างกันตรงไวยากรณ์หรือความหมายในการใช้งาน ในภาษา Python นั้นสนับส...