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