คลาสแบบสแตติกสำหรับยูทิลิตี
จัดกลุ่มฟังก์ชันช่วยเหลือไว้ในคลาสแบบสแตติก
คลาสแบบสแตติกสำหรับยูทิลิตี เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
คลาสสแตติกคืออะไร
คลาสสแตติกประกาศด้วย static class ภายในมีได้เฉพาะสมาชิกสแตติกและไม่สามารถสร้างอินสแตนซ์ได้ คลาสประเภทนี้เป็นที่เหมาะสมสำหรับฟังก์ชันช่วยเหลือ
using System;
static class StringUtils
{
public static string Shout(string s) => s.ToUpper() + "!";
}
class Program
{
static void Main()
{
Console.WriteLine(StringUtils.Shout("hello"));
}
}ไม่สามารถสร้างอินสแตนซ์ได้
คุณจะไม่เขียน new กับคลาสสแตติก การเข้าถึงทั้งหมดจะทำผ่านชื่อคลาสโดยตรง
using System;
static class MathUtils
{
public static int Cube(int x) => x * x * x;
}
class Program
{
static void Main()
{
// No instance needed
Console.WriteLine(MathUtils.Cube(3));
}
}อนุญาตเฉพาะสมาชิกสแตติก
คอมไพเลอร์บังคับให้สมาชิกทุกตัวของคลาสสแตติกเป็นสแตติก ฟิลด์อินสแตนซ์หรือคอนสตรักเตอร์ไม่ได้รับอนุญาต
using System;
static class Temperature
{
public static double ToFahrenheit(double c) => c * 9 / 5 + 32;
public static double ToCelsius(double f) => (f - 32) * 5 / 9;
}
class Program
{
static void Main()
{
Console.WriteLine(Temperature.ToFahrenheit(100));
Console.WriteLine(Temperature.ToCelsius(32));
}
}การจัดกลุ่มเมธอดช่วยเหลือที่เกี่ยวข้องกัน
คลาสสแตติกช่วยจัดกลุ่มฟังก์ชันที่มีหัวข้อร่วมกัน ทำให้มีเนมสเปซที่ชัดเจน เช่น Validation.IsEmail(...)
using System;
static class Validation
{
public static bool IsPositive(int n) => n > 0;
public static bool IsEmail(string s) => s.Contains("@") && s.Contains(".");
}
class Program
{
static void Main()
{
Console.WriteLine(Validation.IsPositive(5));
Console.WriteLine(Validation.IsEmail("a@b.com"));
}
}คลาส Math ในตัว
คลาส Math ของ .NET เป็นคลาสสแตติก คุณจะไม่สร้างอินสแตนซ์ของคลาสนี้ แต่เรียกใช้ Math.Sqrt Math.Max และเมธอดอื่น ๆ โดยตรง
using System;
class Program
{
static void Main()
{
Console.WriteLine(Math.Max(3, 9));
Console.WriteLine(Math.Sqrt(144));
Console.WriteLine(Math.Round(3.14159, 2));
}
}คลาสสแตติกที่มีฟิลด์สแตติก
คลาสสแตติกสามารถมีฟิลด์สแตติกสำหรับค่าคงที่หรือการกำหนดค่าที่เมธอดต่าง ๆ ใช้ร่วมกัน
using System;
static class Pricing
{
public static decimal Tax = 0.08m;
public static decimal WithTax(decimal price) => price + price * Tax;
}
class Program
{
static void Main()
{
Console.WriteLine(Pricing.WithTax(100m));
}
}ฟังก์ชันบริสุทธิ์
เมธอดช่วยเหลือควรเป็นฟังก์ชันบริสุทธิ์ กล่าวคือ ผลลัพธ์ขึ้นอยู่กับอินพุตเท่านั้นและไม่มี state ที่ซ่อนอยู่ วิธีนี้ทำให้คาดเดาผลลัพธ์และทดสอบได้ง่าย
using System;
static class Geometry
{
public static double RectArea(double w, double h) => w * h;
public static double TriArea(double b, double h) => 0.5 * b * h;
}
class Program
{
static void Main()
{
Console.WriteLine(Geometry.RectArea(4, 5));
Console.WriteLine(Geometry.TriArea(6, 3));
}
}การประกอบเมธอดช่วยเหลือ
เมธอดช่วยเหลือแบบสแตติกสามารถเรียกใช้กันเอง เพื่อสร้างการดำเนินการที่ใหญ่ขึ้นจากการดำเนินการที่เล็กลง
using System;
static class TextUtils
{
public static string Clean(string s) => s.Trim().ToLower();
public static string Slug(string s) => Clean(s).Replace(" ", "-");
}
class Program
{
static void Main()
{
Console.WriteLine(TextUtils.Slug(" Hello World "));
}
}คลาสสแตติกเทียบกับสมาชิกสแตติกในคลาสทั่วไป
หากชนิดข้อมูลมีแต่เมธอดช่วยเหลือ ให้ทำคลาสทั้งคลาสเป็นสแตติก หากมีทั้งเมธอดช่วยเหลือและอินสแตนซ์ ให้ใช้คลาสทั่วไปที่มีสมาชิกสแตติกบางส่วน
using System;
static class Convert2
{
public static int FeetToInches(int feet) => feet * 12;
}
class Program
{
static void Main()
{
Console.WriteLine(Convert2.FeetToInches(3) + " inches");
}
}ทำให้ค้นหายูทิลิตีได้ง่าย
จัดกลุ่มเมธอดช่วยเหลือไว้ในคลาสสแตติกที่ตั้งชื่อสื่อความหมาย (DateUtils, StringUtils) เพื่อให้นักพัฒนาคนอื่นค้นหาได้ง่าย
using System;
static class DateUtils
{
public static bool IsWeekend(DayOfWeek d) =>
d == DayOfWeek.Saturday || d == DayOfWeek.Sunday;
}
class Program
{
static void Main()
{
Console.WriteLine(DateUtils.IsWeekend(DayOfWeek.Sunday));
Console.WriteLine(DateUtils.IsWeekend(DayOfWeek.Monday));
}
}นำทุกอย่างมารวมกัน
คลาสยูทิลิตีแบบสแตติกช่วยรวมตรรกะที่ไม่มี state ไว้ภายใต้ชื่อที่ชัดเจน และลดโค้ดซ้ำทั่วทั้งโค้ดของโปรเจกต์
using System;
static class MoneyUtils
{
public static string Format(decimal amount) => "$" + amount.ToString("0.00");
public static decimal ApplyDiscount(decimal price, double pct) =>
price * (decimal)(1 - pct / 100);
}
class Program
{
static void Main()
{
decimal discounted = MoneyUtils.ApplyDiscount(80m, 25);
Console.WriteLine(MoneyUtils.Format(discounted));
}
}ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับคลาสสแตติก
ทบทวน
คลาสสแตติก (static class X) ไม่สามารถสร้างอินสแตนซ์ได้และมีได้เฉพาะสมาชิกสแตติก คลาสนี้เป็นที่มาตรฐานสำหรับฟังก์ชันยูทิลิตีและค่าคงที่ที่ไม่มี state โดยจัดกลุ่มไว้ภายใต้ชื่อที่สื่อความหมาย คลาส Math ในตัวเป็นตัวอย่างที่คุ้นเคย
using System;
static class Util
{
public static int Double(int n) => n * 2;
}
class Program
{
static void Main()
{
Console.WriteLine(Util.Double(21));
}
}คำถามที่พบบ่อย
บทเรียน “คลาสแบบสแตติกสำหรับยูทิลิตี” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “คลาสแบบสแตติกสำหรับยูทิลิตี” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “คลาสแบบสแตติกสำหรับยูทิลิตี”
จัดกลุ่มฟังก์ชันช่วยเหลือไว้ในคลาสแบบสแตติก คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “คลาสแบบสแตติกสำหรับยูทิลิตี” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม
ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เมธอดและฟิลด์แบบสแตติก
- คลาสแบบสแตติกสำหรับยูทิลิตี
- ค่าคงที่และฟิลด์ readonly
- การออกแบบแบบสแตติกกับแบบอินสแตนซ์