ตัวกำหนดค่าเริ่มต้นของออบเจ็กต์และคอลเลกชัน
กำหนดคุณสมบัติขณะสร้างได้อย่างกระชับ
ตัวกำหนดค่าเริ่มต้นของออบเจ็กต์และคอลเลกชัน เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
ตัวเริ่มต้นออบเจ็กต์คืออะไร
ตัวเริ่มต้นออบเจ็กต์ใช้กำหนดพร็อพเพอร์ตีหรือฟิลด์สาธารณะทันทีหลัง new ภายใน { } โดยไม่ต้องเขียนคอนสตรักเตอร์สำหรับทุกชุดค่าที่เป็นไปได้
using System;
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
var p = new Person { Name = "Ada", Age = 36 };
Console.WriteLine(p.Name + ", " + p.Age);
}
}ไวยากรณ์ของตัวเริ่มต้น
ระบุการกำหนดค่าพร็อพเพอร์ตีโดยคั่นด้วยจุลภาคภายในวงเล็บปีกกา การกำหนดค่าเหล่านี้จะทำงานหลังจากคอนสตรักเตอร์ทำงานเสร็จ
using System;
class Car
{
public string Make { get; set; }
public string Model { get; set; }
public int Year { get; set; }
}
class Program
{
static void Main()
{
var car = new Car
{
Make = "Toyota",
Model = "Corolla",
Year = 2022
};
Console.WriteLine(car.Year + " " + car.Make + " " + car.Model);
}
}การใช้คอนสตรักเตอร์ร่วมกับตัวเริ่มต้น
คุณสามารถเรียกใช้คอนสตรักเตอร์ AND ใช้ตัวเริ่มต้นได้ คอนสตรักเตอร์จะทำงานก่อน จากนั้นตัวเริ่มต้นจึงกำหนดค่าพร็อพเพอร์ตีที่ระบุไว้
using System;
class Widget
{
public string Id { get; }
public string Label { get; set; }
public Widget(string id) { Id = id; }
}
class Program
{
static void Main()
{
var w = new Widget("w1") { Label = "Submit" };
Console.WriteLine(w.Id + ": " + w.Label);
}
}การเริ่มต้นเฉพาะบางพร็อพเพอร์ตี
คุณระบุเฉพาะพร็อพเพอร์ตีที่ต้องการได้ ส่วนที่เหลือจะคงค่าเริ่มต้นไว้ วิธีนี้ทำให้ตัวเริ่มต้นมีความยืดหยุ่น
using System;
class Settings
{
public bool DarkMode { get; set; } = false;
public int Volume { get; set; } = 50;
public string Lang { get; set; } = "en";
}
class Program
{
static void Main()
{
var s = new Settings { DarkMode = true };
Console.WriteLine(s.DarkMode + ", " + s.Volume + ", " + s.Lang);
}
}ตัวเริ่มต้นคอลเลกชัน
ตัวเริ่มต้นคอลเลกชันใช้เติมข้อมูลลงในลิสต์ เซต หรืออาร์เรย์ตั้งแต่ตอนสร้าง โดยใช้ { } และระบุสมาชิกคั่นด้วยจุลภาค
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var nums = new List<int> { 1, 2, 3, 4, 5 };
Console.WriteLine("Count: " + nums.Count);
Console.WriteLine("Sum: " + Sum(nums));
}
static int Sum(List<int> list)
{
int t = 0;
foreach (var n in list) t += n;
return t;
}
}ตัวเริ่มต้นคอลเลกชันทำงานอย่างไร
คอมไพเลอร์จะแปลงสมาชิกแต่ละตัวให้เป็นการเรียกใช้ Add(...) ชนิดใดก็ตามที่มีเมธอด Add และรองรับ IEnumerable จะใช้ไวยากรณ์นี้ได้
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var names = new List<string> { "Ann", "Bob", "Cara" };
foreach (var n in names)
Console.WriteLine(n);
}
}ตัวเริ่มต้นดิกชันนารี
คุณสามารถเริ่มต้นดิกชันนารีด้วยคู่คีย์และค่าในวงเล็บปีกกา ซึ่งสะดวกอย่างมากสำหรับตารางค้นหา
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var ages = new Dictionary<string, int>
{
["Ann"] = 30,
["Bob"] = 25
};
Console.WriteLine("Ann is " + ages["Ann"]);
}
}ตัวเริ่มต้นออบเจ็กต์แบบซ้อนกัน
ตัวเริ่มต้นออบเจ็กต์สามารถเริ่มต้นออบเจ็กต์ที่ซ้อนกันได้ ทำให้สร้างกราฟออบเจ็กต์ขนาดเล็กได้ภายในนิพจน์เดียว
using System;
class Address
{
public string City { get; set; }
}
class Customer
{
public string Name { get; set; }
public Address Home { get; set; } = new Address();
}
class Program
{
static void Main()
{
var c = new Customer
{
Name = "Lin",
Home = new Address { City = "Tokyo" }
};
Console.WriteLine(c.Name + " in " + c.Home.City);
}
}คอลเลกชันของออบเจ็กต์
ผสานความสามารถทั้งสองอย่างเข้าด้วยกัน โดยเริ่มต้นลิสต์ที่สมาชิกแต่ละตัวสร้างขึ้นด้วยตัวเริ่มต้นออบเจ็กต์เช่นกัน
using System;
using System.Collections.Generic;
class Item
{
public string Name { get; set; }
public decimal Price { get; set; }
}
class Program
{
static void Main()
{
var cart = new List<Item>
{
new Item { Name = "Pen", Price = 1.5m },
new Item { Name = "Book", Price = 9.0m }
};
decimal total = 0;
foreach (var i in cart) total += i.Price;
Console.WriteLine("Total: " + total);
}
}ตัวเริ่มต้นและพร็อพเพอร์ตี init
ตัวเริ่มต้นออบเจ็กต์เป็นวิธีกำหนดค่าพร็อพเพอร์ตีที่มีเฉพาะ init เนื่องจากพร็อพเพอร์ตีเหล่านี้กำหนดค่าได้เฉพาะระหว่างการเริ่มต้นเท่านั้น
using System;
class Config
{
public string Env { get; init; }
public int Retries { get; init; }
}
class Program
{
static void Main()
{
var c = new Config { Env = "prod", Retries = 3 };
Console.WriteLine(c.Env + " / " + c.Retries);
}
}นำทุกอย่างมารวมกัน
ตัวเริ่มต้นทำให้การสร้างออบเจ็กต์มีลักษณะเป็นการประกาศและอ่านง่าย โดยเฉพาะเมื่อใช้กับออบเจ็กต์การกำหนดค่าและข้อมูลสำหรับการทดสอบ
using System;
using System.Collections.Generic;
class Team
{
public string Name { get; set; }
public List<string> Members { get; set; } = new List<string>();
}
class Program
{
static void Main()
{
var t = new Team
{
Name = "Alpha",
Members = { "Ann", "Bob", "Cara" }
};
Console.WriteLine(t.Name + " has " + t.Members.Count + " members");
}
}ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับตัวเริ่มต้น
ทบทวน
ตัวเริ่มต้นออบเจ็กต์ใช้กำหนดสมาชิกสาธารณะใน { } หลัง new และทำงานหลังคอนสตรักเตอร์ ตัวเริ่มต้นคอลเลกชันจะเพิ่มสมาชิกผ่านการเรียกใช้ Add โดยอัตโนมัติ ส่วนดิกชันนารีรองรับคู่คีย์และค่า ทั้งสองแบบสามารถซ้อนกัน ใช้กับพร็อพเพอร์ตี init และทำให้การสร้างออบเจ็กต์กระชับและเป็นการประกาศมากขึ้น
using System;
using System.Collections.Generic;
class Demo
{
public string Name { get; set; }
public List<int> Nums { get; set; } = new List<int>();
}
class Program
{
static void Main()
{
var d = new Demo { Name = "x", Nums = { 1, 2, 3 } };
Console.WriteLine(d.Name + " " + d.Nums.Count);
}
}คำถามที่พบบ่อย
บทเรียน “ตัวกำหนดค่าเริ่มต้นของออบเจ็กต์และคอลเลกชัน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ตัวกำหนดค่าเริ่มต้นของออบเจ็กต์และคอลเลกชัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ตัวกำหนดค่าเริ่มต้นของออบเจ็กต์และคอลเลกชัน”
กำหนดคุณสมบัติขณะสร้างได้อย่างกระชับ คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “ตัวกำหนดค่าเริ่มต้นของออบเจ็กต์และคอลเลกชัน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม
ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การกำหนดคอนสตรักเตอร์
- การเชื่อมโยงคอนสตรักเตอร์ด้วย this
- ตัวกำหนดค่าเริ่มต้นของออบเจ็กต์และคอลเลกชัน
- คอนสตรักเตอร์แบบสแตติก