ฟังก์ชันภายใน (หมายเหตุ 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# 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ลายเซ็น ค่าที่ส่งคืน เมธอดแบบนิพจน์ พารามิเตอร์เสริม/ระบุชื่อ ref/out และโอเวอร์โหลด
- พารามิเตอร์เสริม/ระบุชื่อ และ ref/out/in (พื้นฐาน)
- ฟังก์ชันภายใน (หมายเหตุ C# 6) และโอเวอร์โหลด