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

พารามิเตอร์เสริม/ระบุชื่อ และ ref/out/in (พื้นฐาน)

ใช้พารามิเตอร์เสริมและอาร์กิวเมนต์ระบุชื่อเพื่อความชัดเจน ส่งค่าโดยการอ้างอิงด้วย ref ส่งคืนค่าเพิ่มเติมด้วย out และจำไว้ว่าใน C# 6 ยังไม่มีพารามิเตอร์ in

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

ภาพรวมบทเรียน

เป้าหมาย: ใช้พารามิเตอร์ optional และอาร์กิวเมนต์แบบ named เพื่อให้อ่านง่าย ทำความเข้าใจ ref และ out หมายเหตุ: พารามิเตอร์ in ยังไม่มีใน C# 6

พารามิเตอร์แบบเลือกได้

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

using System;

public static class Notifier
{
  // Optional parameter: suffix has a default value
  public static void Notify(string message, string suffix = "!")
  {
    Console.WriteLine(message + suffix);
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Notifier.Notify("Saved");          // uses "!"
    Notifier.Notify("Warning", "!!");  // overrides default
  }
}

อาร์กิวเมนต์แบบระบุชื่อ

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

using System;

public static class Greeter
{
  public static void Greet(string name, string prefix, int repeat)
  {
    for (int i = 0; i < repeat; i = i + 1)
    {
      Console.WriteLine(prefix + " " + name);
    }
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    // Named args improve readability and allow reordering at call site
    Greeter.Greet(name: "Ada", prefix: "Hello", repeat: 2);
    Greeter.Greet(repeat: 1, name: "Alan", prefix: "Hi");
  }
}

พารามิเตอร์ ref

ref จะส่งตัวแปรโดยการอ้างอิง ดังนั้นผู้เรียกต้องกำหนดค่าเริ่มต้นให้ตัวแปรก่อน

using System;

public static class RefDemo
{
  public static void Increment(ref int n)
  {
    n = n + 1; // modifies caller's variable
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    int value = 5;           // must be assigned before passing by ref
    RefDemo.Increment(ref value);
    Console.WriteLine("value = " + value); // 6
  }
}

พารามิเตอร์ out

out ทำให้เมธอดส่งคืนค่าเพิ่มเติมผ่านพารามิเตอร์ได้ โดยเมธอดต้องกำหนดค่าให้พารามิเตอร์เหล่านั้น

using System;

public static class OutDemo
{
  public static bool TryDivide(int a, int b, out int result)
  {
    if (b == 0)
    {
      result = 0;   // out must be assigned before return
      return false;
    }
    result = a / b;
    return true;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    int r; // not required to be assigned before passing as out
    bool ok = OutDemo.TryDivide(9, 0, out r);
    Console.WriteLine("ok=" + ok + " r=" + r);
  }
}

เกี่ยวกับ "in" (C# 6)

หมายเหตุ: พารามิเตอร์ in ซึ่งเป็นการอ้างอิงแบบอ่านอย่างเดียวมีใน C# รุ่นหลัง ๆ สำหรับ C# 6 คุณสามารถทำสิ่งต่อไปนี้ได้:

  • ส่งค่าโดยตรง (คัดลอก) สำหรับชนิดข้อมูลขนาดเล็ก
  • ใช้ ref เฉพาะเมื่อต้องการแก้ไขค่า
  • กำหนดให้พารามิเตอร์ของเมธอดเป็น readonly ตามแนวปฏิบัติ โดยไม่กำหนดค่าใหม่

พื้นฐานของ ref และ out

ตรวจสอบสั้น ๆ: ข้อใดกล่าวเกี่ยวกับ ref และ out ใน C# 6 ได้ถูกต้อง

ทบทวน

ทบทวน: ใช้พารามิเตอร์แบบเลือกได้สำหรับค่าเริ่มต้น ใช้อาร์กิวเมนต์แบบระบุชื่อเพื่อความชัดเจน ใช้ ref เพื่อแก้ไขข้อมูลของผู้เรียก และใช้ out เพื่อส่งคืนค่าเพิ่มเติม C# 6 ไม่รองรับพารามิเตอร์ in

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

บทเรียน “พารามิเตอร์เสริม/ระบุชื่อ และ ref/out/in (พื้นฐาน)” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “พารามิเตอร์เสริม/ระบุชื่อ และ ref/out/in (พื้นฐาน)”

ใช้พารามิเตอร์เสริมและอาร์กิวเมนต์ระบุชื่อเพื่อความชัดเจน ส่งค่าโดยการอ้างอิงด้วย ref ส่งคืนค่าเพิ่มเติมด้วย out และจำไว้ว่าใน C# 6 ยังไม่มีพารามิเตอร์ in คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

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

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

บทเรียน “พารามิเตอร์เสริม/ระบุชื่อ และ ref/out/in (พื้นฐาน)” ใช้เวลานานแค่ไหน

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

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

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

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

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