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

ฟังก์ชันภายใน (หมายเหตุ C# 6) และโอเวอร์โหลด

โอเวอร์โหลดเมธอดอย่างปลอดภัย (ชื่อเดียวกัน พารามิเตอร์ต่างกัน) และเนื่องจาก C# 6 ไม่มีฟังก์ชันภายใน จึงจำลองด้วยตัวช่วย private ขนาดเล็ก

ฟังก์ชันภายใน (หมายเหตุ C# 6) และโอเวอร์โหลด เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 3 บทเรียน

ภาพรวม

เป้าหมาย: ใช้ชื่อเมธอดเดียวกันกับงานที่เกี่ยวข้องกัน (การโอเวอร์โหลด) ใน C# 6 ไม่มี ฟังก์ชันภายในเมธอด ให้ใช้ เมธอดช่วยเหลือส่วนตัว ขนาดเล็กแทน

พื้นฐานการโอเวอร์โหลด

เมธอดโอเวอร์โหลดใช้ชื่อเดียวกัน แต่แตกต่างกันที่ชนิดหรือจำนวนพารามิเตอร์ คอมไพเลอร์จะเลือกเมธอดที่ตรงที่สุด

using System;

public static class MathX
{
  public static int Sum(int a, int b) { return a + b; }
  public static double Sum(double a, double b) { return a + b; }
}

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine("Sum ints = " + MathX.Sum(2, 3));
    Console.WriteLine("Sum doubles = " + MathX.Sum(2.5, 3.1));
  }
}

การโอเวอร์โหลดตามจำนวนพารามิเตอร์

การเปลี่ยน จำนวนพารามิเตอร์ จะสร้างชุดเมธอดโอเวอร์โหลดที่ชัดเจน

using System;

public static class Printer
{
  public static void Print(string text)
  {
    Console.WriteLine(text);
  }

  public static void Print(string text, int times)
  {
    for (int i = 0; i < times; i = i + 1)
    {
      Console.WriteLine(text);
    }
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Printer.Print("Hello");
    Printer.Print("Hi", 2);
  }
}

กฎของชนิดค่าที่ส่งคืน

กฎ: ไม่สามารถใช้ชนิดค่าที่ส่งคืนเพียงอย่างเดียวเพื่อแยกเมธอดโอเวอร์โหลดได้ ให้เปลี่ยน ชนิด จำนวน หรือ ตัวปรับแต่ง ของพารามิเตอร์ เช่น ref/out เพื่อสร้างเมธอดโอเวอร์โหลดที่ถูกต้อง

ทางเลือกแทนฟังก์ชันภายในเมธอด

ใน C# 6 ไม่มี ฟังก์ชันภายในเมธอด: แยกเมธอด private ขนาดเล็กออกมา เพื่อให้เมธอดหลักเป็นระเบียบ

using System;

// No local functions in C# 6: use a tiny private helper inside the class.
public class Report
{
  private static string Header(string title)
  {
    return "-- " + title + " --";
  }

  public static void Print(string title, string body)
  {
    Console.WriteLine(Header(title));
    Console.WriteLine(body);
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Report.Print("Status", "All green");
  }
}

การเลือกเมธอดโอเวอร์โหลด

คอมไพเลอร์จะเลือกเมธอดที่ตรงที่สุดจากชุดเมธอดโอเวอร์โหลด หากการเรียกเมธอดกำกวม ให้เพิ่มการแปลงชนิดหรือปรับลายเซ็น

using System;

public static class Formatter
{
  public static string Format(int n) { return "N=" + n; }
  public static string Format(string s) { return "S=" + s; }
}

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine(Formatter.Format(5));       // picks int overload
    Console.WriteLine(Formatter.Format("hello")); // picks string overload

    // Avoid ambiguity: cast when needed
    Console.WriteLine(Formatter.Format((int)3));
  }
}

กฎการโอเวอร์โหลด

ตรวจสอบสั้น ๆ: ข้อใดกล่าวเกี่ยวกับการโอเวอร์โหลดเมธอดใน C# ได้ถูกต้อง

ทบทวน

ทบทวน: สร้างชุดเมธอดโอเวอร์โหลดโดยเปลี่ยนชนิดหรือจำนวนพารามิเตอร์ ไม่ใช่ชนิดค่าที่ส่งคืน ใน C# 6 ให้แทนที่ฟังก์ชันภายในเมธอดด้วย เมธอดช่วยเหลือส่วนตัว ขนาดเล็ก เพื่อให้เมธอดเป็นระเบียบ

คำถามที่พบบ่อย

บทเรียน “ฟังก์ชันภายใน (หมายเหตุ C# 6) และโอเวอร์โหลด” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ฟังก์ชันภายใน (หมายเหตุ C# 6) และโอเวอร์โหลด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ฟังก์ชันภายใน (หมายเหตุ C# 6) และโอเวอร์โหลด”

โอเวอร์โหลดเมธอดอย่างปลอดภัย (ชื่อเดียวกัน พารามิเตอร์ต่างกัน) และเนื่องจาก C# 6 ไม่มีฟังก์ชันภายใน จึงจำลองด้วยตัวช่วย private ขนาดเล็ก คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 3 บทเรียน

บทเรียน “ฟังก์ชันภายใน (หมายเหตุ C# 6) และโอเวอร์โหลด” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม

ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. ลายเซ็น ค่าที่ส่งคืน เมธอดแบบนิพจน์ พารามิเตอร์เสริม/ระบุชื่อ ref/out และโอเวอร์โหลด
  2. พารามิเตอร์เสริม/ระบุชื่อ และ ref/out/in (พื้นฐาน)
  3. ฟังก์ชันภายใน (หมายเหตุ C# 6) และโอเวอร์โหลด
← กลับไปที่ C# Academy