ค่าเทียบกับการอ้างอิง ลิเทอรัล การอนุมานด้วย var และ const/readonly
เรียนรู้ว่าชนิดค่าแตกต่างจากชนิดอ้างอิงอย่างไร ลิเทอรัลและส่วนต่อท้ายตัวเลขทำงานอย่างไร ควรใช้ var เมื่อใด และบทบาทของ const กับ readonly
ค่าเทียบกับการอ้างอิง ลิเทอรัล การอนุมานด้วย var และ const/readonly เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 3 บทเรียน
เหตุใดชนิดข้อมูลจึงสำคัญ
เป้าหมาย: ทำความเข้าใจชนิดค่าและชนิดอ้างอิง รวมถึงการทำงานของตัวแปร ค่าลิเทอรัล และค่าคงที่ในโค้ดที่ใช้ทั่วไป
ชนิดค่าเทียบกับชนิดอ้างอิง
ชนิดค่า: คัดลอกข้อมูลเมื่อกำหนดค่า เช่น int, bool และ struct ชนิดอ้างอิง: คัดลอกการอ้างอิง เช่น class, array และ string
- ชนิดค่า: การเปลี่ยนแปลงภายในที่ปลอดภัยกว่า
- ชนิดอ้างอิง: ใช้อัตลักษณ์ของออบเจ็กต์ร่วมกัน
ค่าลิเทอรัลและส่วนต่อท้าย
ค่าลิเทอรัลมีชนิดข้อมูล ใช้ส่วนต่อท้ายเพื่อความชัดเจน: f (float), m (decimal), L (long)
- 3.14f → float
- 10m → decimal (จำนวนเงิน)
- 123L → long
var inference
var ช่วยให้คอมไพเลอร์อนุมานชนิดข้อมูลจากด้านขวาของการกำหนดค่า ควรใช้เมื่อชนิดข้อมูลชัดเจนจากบริบท มิฉะนั้นให้ระบุชนิดข้อมูลอย่างชัดเจน
const เทียบกับ readonly
const: ค่าคงที่ขณะคอมไพล์ ส่วน readonly: กำหนดค่าในตัวสร้างหรือตอนประกาศ
- ใช้ const สำหรับค่าที่ไม่เปลี่ยนแปลง เช่น Pi
- ใช้ readonly สำหรับค่าที่ทราบเมื่อโปรแกรมทำงาน
ชนิดข้อมูลในการใช้งานจริง
ดูพฤติกรรมของชนิดค่าและชนิดอ้างอิง ส่วนต่อท้ายของตัวเลข การอนุมานชนิดข้อมูลอย่างง่ายด้วย var และ const/readonly ในโปรแกรมขนาดเล็กหนึ่งโปรแกรม
using System;
// Value type (struct) copies by value
public struct PointS
{
public int X;
public int Y;
}
// Reference type (class) copies the reference
public class PointC
{
public int X;
public int Y;
}
// Readonly demo class
public class Config
{
public readonly string Name;
public Config(string name)
{
Name = name; // can set here
}
}
public class Program
{
// Compile-time constant
private const double Pi = 3.14159;
public static void Main(string[] args)
{
// 1) Value vs reference
PointS a = new PointS { X = 1, Y = 2 };
PointS b = a; // copy value
b.X = 99;
Console.WriteLine("Value struct a.X = " + a.X); // 1 (unchanged)
Console.WriteLine("Value struct b.X = " + b.X); // 99
PointC ac = new PointC { X = 1, Y = 2 };
PointC bc = ac; // copy reference
bc.X = 77;
Console.WriteLine("Ref class ac.X = " + ac.X); // 77 (same object)
Console.WriteLine("Ref class bc.X = " + bc.X); // 77
// 2) Literals & suffixes
float f = 3.14f;
decimal price = 10m;
long big = 123L;
Console.WriteLine("f=" + f + " price=" + price + " big=" + big);
// 3) var inference (type is obvious)
var sum = a.X + a.Y; // int
Console.WriteLine("sum=" + sum);
// 4) const vs readonly
Config cfg = new Config("Demo");
Console.WriteLine("Pi=" + Pi + " Name=" + cfg.Name);
}
}
คำจำกัดความของชนิดค่า
ทบทวน
ทบทวน: ชนิดค่าจะคัดลอกข้อมูล ส่วนชนิดอ้างอิงจะแชร์ออบเจ็กต์ ใช้ส่วนต่อท้ายสำหรับค่าลิเทอรัลตัวเลข ใช้ var เมื่อชนิดข้อมูลชัดเจน และเลือกใช้ const หรือ readonly ให้เหมาะสม
คำถามที่พบบ่อย
บทเรียน “ค่าเทียบกับการอ้างอิง ลิเทอรัล การอนุมานด้วย var และ const/readonly” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ค่าเทียบกับการอ้างอิง ลิเทอรัล การอนุมานด้วย var และ const/readonly” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ค่าเทียบกับการอ้างอิง ลิเทอรัล การอนุมานด้วย var และ const/readonly”
เรียนรู้ว่าชนิดค่าแตกต่างจากชนิดอ้างอิงอย่างไร ลิเทอรัลและส่วนต่อท้ายตัวเลขทำงานอย่างไร ควรใช้ var เมื่อใด และบทบาทของ const กับ readonly คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน
บทเรียน “ค่าเทียบกับการอ้างอิง ลิเทอรัล การอนุมานด้วย var และ const/readonly” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม
ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ค่าเทียบกับการอ้างอิง ลิเทอรัล การอนุมานด้วย var และ const/readonly
- ตัวดำเนินการและนิพจน์: เลขคณิต การเปรียบเทียบ ตรรกะ
- การใช้งานส่วนต่อท้ายจริง การแปลงแบบแคสต์เทียบกับการแปลงค่า และการสร้างอ็อบเจกต์ใน C# 6