แบบฝึกหัด - ใช้พารามิเตอร์ในวิธีการ
เมื่อสร้างวิธีการ คุณมักจะต้องการใส่ข้อมูลบางอย่างสําหรับวิธีการใช้ ข้อมูลที่ใช้โดยเมธอดจะเรียกว่าพารามิเตอร์ คุณสามารถใส่พารามิเตอร์ได้มากเท่าที่ต้องการเพื่อทํางานให้สําเร็จหรือไม่มีเลย
คําศัพท์ 'พารามิเตอร์' และ 'อาร์กิวเมนต์' มักใช้สลับกัน อย่างไรก็ตาม 'พารามิเตอร์' หมายถึงตัวแปรในลายเซ็นของเมธอด 'อาร์กิวเมนต์' คือค่าที่ส่งผ่านเมื่อมีการเรียกเมธอด
เพิ่มพารามิเตอร์ไปยังวิธีการ
พารามิเตอร์ในวิธีการ ทํางานคล้ายกับตัวแปร มีการกําหนดพารามิเตอร์โดยการระบุชนิดข้อมูล ตามด้วยชื่อของพารามิเตอร์ มีการประกาศพารามิเตอร์ในลายเซ็นของเมธอด และตัวเรียกเมธอด จะจัดเตรียมค่าสําหรับพารามิเตอร์แทนการเตรียมใช้งานภายในเมธอดเอง พิจารณาโค้ดต่อไปนี้:
CountTo(5);
void CountTo(int max)
{
for (int i = 0; i < max; i++)
{
Console.Write($"{i}, ");
}
}
ในตัวอย่างนี้ วิธีการ CountTo จะยอมรับพารามิเตอร์จํานวนเต็มที่มีชื่อว่าmax มีการอ้างอิงพารามิเตอร์ ใน for รอบ ของวิธีการ เมื่อมีการ CountTo เรียกใช้ จํานวนเต็ม 5 จะถูกระบุเป็นอาร์กิวเมนต์
ในแบบฝึกหัดนี้ คุณจะได้เรียนรู้วิธีสร้างและใช้พารามิเตอร์วิธีการของคุณเอง
เตรียมสภาพแวดล้อมการเข้ารหัสของคุณ
โมดูลนี้ประกอบด้วยกิจกรรมลงมือทําซึ่งจะแนะนําคุณตลอดกระบวนการสร้างและเรียกใช้รหัสการสาธิต คุณควรทํากิจกรรมเหล่านี้ให้เสร็จสมบูรณ์โดยใช้ Visual Studio Code เป็นสภาพแวดล้อมการพัฒนาของคุณ การใช้ Visual Studio Code สําหรับกิจกรรมเหล่านี้จะช่วยให้คุณเขียนและเรียกใช้โค้ดในสภาพแวดล้อมของนักพัฒนาที่มืออาชีพใช้ทั่วโลกได้อย่างสะดวกขึ้น
เปิด Visual Studio Code
คุณสามารถใช้เมนูเริ่มต้นของ Windows (หรือทรัพยากรที่เทียบเท่าสําหรับระบบปฏิบัติการอื่น) เพื่อเปิด Visual Studio Code
บนเมนู ไฟล์ รหัส Visual Studio เลือก เปิดโฟลเดอร์
ในกล่องโต้ตอบ เปิดโฟลเดอร์ ให้ไปยังโฟลเดอร์ Windows Desktop
หากคุณมีตําแหน่งโฟลเดอร์อื่นที่คุณเก็บโครงการโค้ดไว้ คุณสามารถใช้ตําแหน่งโฟลเดอร์นั้นแทนได้ สําหรับการฝึกนี้ สิ่งสําคัญคือการมีตําแหน่งที่ตั้งที่ง่ายต่อการค้นหาและจดจํา
ในกล่องโต้ตอบ เปิด โฟลเดอร์ ให้เลือก เลือกโฟลเดอร์
ถ้าคุณเห็นกล่องโต้ตอบความปลอดภัยที่ถามว่าคุณเชื่อถือผู้เขียนหรือไม่ ให้เลือก ใช่
บนเมนู เทอร์มินัล Visual Studio Code ให้เลือก เทอร์มินัลใหม่
โปรดสังเกตว่าพร้อมท์คําสั่งในแผงเทอร์มินัล จะแสดงเส้นทางโฟลเดอร์สําหรับโฟลเดอร์ปัจจุบัน เช่น:
C:\Users\someuser\Desktop>หมายเหตุ
ถ้าทํางานบนพีซีของคุณเอง แทนที่จะทํางานใน Sandbox หรือสภาพแวดล้อมที่เป็นโฮสต์ และคุณจบมอดูล Microsoft Learn อื่นๆ ใน C# series นี้ คุณอาจสร้างโฟลเดอร์โครงการสําหรับตัวอย่างโค้ดไว้แล้ว ถ้าเป็นกรณีนี้ คุณสามารถข้ามขั้นตอนถัดไป ซึ่งใช้เพื่อสร้างแอปคอนโซลในโฟลเดอร์ TestProject
ที่พรอมท์คําสั่งเทอร์มินัล หากต้องการสร้างแอปพลิเคชันคอนโซลใหม่ในโฟลเดอร์ที่ระบุ ให้พิมพ์ dotnet new console -o ./CsharpProjects/TestProject แล้วกด Enter
คําสั่ง .NET CLI นี้ใช้เทมเพลตโปรแกรม .NET เพื่อสร้างโครงการแอปพลิเคชันคอนโซล C# ใหม่ในตําแหน่งที่ตั้งโฟลเดอร์ที่ระบุ คําสั่งจะสร้างโฟลเดอร์ CsharpProjects และ TestProject ให้คุณ และใช้ TestProject เป็นชื่อของไฟล์
.csprojในแผง EXPLORER ให้ขยายโฟลเดอร์ CsharpProjects
คุณควรเห็นโฟลเดอร์ TestProject และแฟ้มสองแฟ้ม แฟ้มโปรแกรม C# ที่ชื่อว่า Program.cs และแฟ้มโครงการ C# ที่ชื่อว่า TestProject.csproj
ในแผง EXPLORER หากต้องการดูไฟล์โค้ดของคุณในแผง ตัวแก้ไข ให้เลือก Program.cs
ลบบรรทัดรหัสที่มีอยู่
คุณจะใช้โครงการคอนโซล C# นี้เพื่อสร้าง สร้าง และเรียกใช้ตัวอย่างโค้ดในระหว่างโมดูลนี้
ปิดแผงเทอร์มินัล
สร้างวิธีการ ด้วยพารามิเตอร์
ในงานนี้ คุณจะสร้างวิธีการที่ปรับเวลาตามกําหนดการให้กับโซนเวลา GMT อื่น เมธอด ควรยอมรับรายการของเวลา โซนเวลาปัจจุบัน และโซนเวลาใหม่ มาเริ่มต้นกันเลย!
ป้อนรหัสต่อไปนี้ลงในตัวแก้ไขรหัส Visual Studio:
int[] schedule = {800, 1200, 1600, 2000};หากต้องการสร้างวิธีการด้วยพารามิเตอร์ ให้ป้อนรหัสต่อไปนี้ในบรรทัดว่างใหม่:
void DisplayAdjustedTimes(int[] times, int currentGMT, int newGMT) { }โปรดสังเกตว่ามีการประกาศพารามิเตอร์คล้ายกับวิธีที่คุณประกาศตัวแปรโดยใช้ชนิดข้อมูลตามด้วยชื่อตัวแปร คุณสามารถใช้พารามิเตอร์ของชนิดข้อมูลใดก็ได้ เช่น
string,bool,int, อาร์เรย์ และอื่น ๆ อีกมากมาย! หลายพารามิเตอร์ในเมธอดจะถูกคั่นด้วยจุลภาคเสมอป้อนรหัสต่อไปนี้ใน
DisplayAdjustedTimesวิธีการ:int diff = 0; if (Math.Abs(newGMT) > 12 || Math.Abs(currentGMT) > 12) { Console.WriteLine("Invalid GMT"); }สังเกตว่าคุณไม่จําเป็นต้องประกาศตัวแปร
newGMTอย่างไร และcurrentGMTเนื่องจากมีการประกาศตัวแปรเหล่านั้นในลายเซ็นของเมธอดแล้ว คุณยังไม่ต้องเตรียมใช้งานตัวแปรเนื่องจากเมธอด จะถือว่าตัวเรียกใส่อาร์กิวเมนต์เหล่านั้นด้วยค่าที่กําหนดในขั้นตอนนี้ คุณสร้าง
int diffเพื่อจัดเก็บความแตกต่างของเวลา จากนั้นตรวจสอบว่าค่า GMT ที่ระบุอยู่ระหว่าง -12 และ 12 หรือไม่ การใช้Math.Absให้ค่าสัมบูรณ์ของตัวเลข แก่คุณ ดังนั้นค่า GMT จะไม่ถูกต้องถ้ามีค่ามากกว่า 12หากต้องการคํานวณความแตกต่างของเวลา ให้
DisplayAdjustedTimesอัปเดตวิธีการ ดังนี้:int diff = 0; if (Math.Abs(newGMT) > 12 || Math.Abs(currentGMT) > 12) { Console.WriteLine("Invalid GMT"); } else if (newGMT <= 0 && currentGMT <= 0 || newGMT >= 0 && currentGMT >= 0) { diff = 100 * (Math.Abs(newGMT) - Math.Abs(currentGMT)); } else { diff = 100 * (Math.Abs(newGMT) + Math.Abs(currentGMT)); }ในรหัสนี้คุณตรวจสอบเพื่อดูว่าคุณจําเป็นต้องเพิ่มหรือลบค่าสัมบูรณ์ของโซนเวลา GMT เพื่อรับความแตกต่างในหน่วยชั่วโมงหรือไม่ ถ้าค่า GMT ใช้เครื่องหมายเดียวกัน (ทั้งค่าบวกหรือค่าลบทั้งสอง) ผลต่างของชั่วโมงจะเท่ากับความแตกต่างระหว่างตัวเลขสองตัว หากค่า GMT มีเครื่องหมายตรงกันข้ามกัน ผลต่างจะเท่ากับผลรวมของตัวเลขสองตัว เนื่องจากชั่วโมงแสดงเป็นหลายร้อย คุณจึงคูณผลลัพธ์ด้วย 100
เมื่อต้องการแสดงผลลัพธ์ ให้ป้อนรหัสต่อไปนี้ที่ส่วนท้ายของ
DisplayAdjustedTimesวิธีการ:for (int i = 0; i < times.Length; i++) { int newTime = (times[i] + diff) % 2400; Console.WriteLine($"{times[i]} -> {newTime}"); }หากต้องการเรียกใช้วิธีการของคุณ ให้ป้อนรหัสต่อไปนี้หลังจาก
int[] scheduleยืนยันตัวแปร:DisplayAdjustedTimes(schedule, 6, -6);โปรดสังเกตว่าทั้งตัวแปรและสัญพจน์สามารถจัดหาเป็นอาร์กิวเมนต์ไปยังเมธอด ได้ เมื่อใช้พารามิเตอร์ป้อนเข้า วิธีการ จะไม่ถูกจํากัดให้ใช้ค่าของตัวแปรส่วนกลาง
ตรวจสอบงานของคุณ
สําหรับงานนี้ คุณจะเรียกใช้แอปพลิเคชันของคุณจากเทอร์มินัลรวมและตรวจสอบว่ารหัสของคุณทํางานได้อย่างถูกต้อง มาเริ่มต้นกันเลย
บันทึกงานของคุณโดยใช้ Ctrl + S หรือใช้เมนูไฟล์ของ Visual Studio Code
หากจําเป็น ให้เปิดแผงเทอร์มินัลแบบรวมของ Visual Studio Code
ในแผง EXPLORER หากต้องการเปิดเทอร์มินัลที่ตําแหน่งโฟลเดอร์ TestProject ของคุณ ให้คลิกขวาที่ TestProject จากนั้นเลือก เปิดในเทอร์มินัลแบบรวม
ที่พร้อมท์คําสั่งเทอร์มินัล ให้ใส่ dotnet ทํางาน
ตรวจสอบว่าโค้ดของคุณสร้างเอาต์พุตต่อไปนี้:
800 -> 2000 1200 -> 0 1600 -> 400 2000 -> 800หากรหัสของคุณแสดงผลลัพธ์ที่แตกต่างกัน คุณจะต้องตรวจสอบรหัสของคุณเพื่อค้นหาข้อผิดพลาดและทําการอัปเดต เรียกใช้รหัสอีกครั้งเพื่อดูว่าคุณได้แก้ไขปัญหาหรือไม่ อัปเดตและเรียกใช้โค้ดของคุณต่อจนกว่ารหัสของคุณจะสร้างผลลัพธ์ที่คาดหวัง
สรุป
นี่คือสิ่งที่คุณได้เรียนรู้เกี่ยวกับพารามิเตอร์จนถึงตอนนี้:
- ข้อมูลสามารถส่งผ่านไปยังวิธีการในรูปแบบของพารามิเตอร์
- มีการประกาศพารามิเตอร์ในลายเซ็นของเมธอด
- พารามิเตอร์หลายรายการจะถูกคั่นด้วยเครื่องหมายจุลภาค
- วิธีการสามารถยอมรับตัวแปรหรืออาร์กิวเมนต์สัญพจน์