0Pricing
C# Academy · บทเรียน

คลาสแบบสแตติกสำหรับยูทิลิตี

จัดกลุ่มฟังก์ชันช่วยเหลือไว้ในคลาสแบบสแตติก

คลาสแบบสแตติกสำหรับยูทิลิตี เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เมธอดและฟิลด์แบบสแตติก
  2. คลาสแบบสแตติกสำหรับยูทิลิตี
  3. ค่าคงที่และฟิลด์ readonly
  4. การออกแบบแบบสแตติกกับแบบอินสแตนซ์
← กลับไปที่ C# Academy