ฉันทำงานบน Java และยังใหม่กับเทคโนโลยี. Net
เป็นไปได้หรือไม่ที่จะประกาศฟังก์ชันใน C # ซึ่งรับพารามิเตอร์อินพุตตัวแปร
มีไวยากรณ์ C # คล้ายกับไวยากรณ์ Java ต่อไปนี้หรือไม่?
void f1(String... a)
ฉันทำงานบน Java และยังใหม่กับเทคโนโลยี. Net
เป็นไปได้หรือไม่ที่จะประกาศฟังก์ชันใน C # ซึ่งรับพารามิเตอร์อินพุตตัวแปร
มีไวยากรณ์ C # คล้ายกับไวยากรณ์ Java ต่อไปนี้หรือไม่?
void f1(String... a)
คำตอบ:
ใช่ C # มีค่าเทียบเท่าพารามิเตอร์ varargs เรียกว่าอาร์เรย์พารามิเตอร์และนำมาใช้กับparamsตัวปรับแต่ง:
public void Foo(int x, params string[] values)
จากนั้นโทรด้วย:
Foo(10, "hello", "there");
เช่นเดียวกับ Java เป็นเพียงพารามิเตอร์สุดท้ายซึ่งอาจแตกต่างกันไปเช่นนี้ โปรดทราบว่า (เช่นเดียวกับ Java) พารามิเตอร์ของparams object[] objectsอาจทำให้เกิดความสับสนได้ง่ายเนื่องจากคุณต้องจำไว้ว่าอาร์กิวเมนต์ประเภทเดียวobject[]ถูกกำหนดให้ถูกรวมอีกครั้งหรือไม่ ในทำนองเดียวกันสำหรับประเภทที่เป็นโมฆะคุณต้องจำไว้ว่าอาร์กิวเมนต์เดียวของnullจะถือว่าเป็นการอ้างอิงอาร์เรย์หรือองค์ประกอบอาร์เรย์เดียว (ฉันคิดว่าคอมไพเลอร์จะสร้างอาร์เรย์เท่านั้นหากจำเป็น แต่ฉันมักจะเขียนโค้ดซึ่งทำให้ฉันไม่ต้องจำสิ่งนั้น)
คีย์เวิร์ด params ช่วยให้คุณระบุเมธอดพารามิเตอร์ที่รับอาร์กิวเมนต์จำนวนตัวแปร
คุณสามารถส่งรายการอาร์กิวเมนต์ที่คั่นด้วยเครื่องหมายจุลภาคของประเภทที่ระบุในการประกาศพารามิเตอร์หรืออาร์เรย์ของอาร์กิวเมนต์ประเภทที่ระบุ คุณยังไม่สามารถส่งข้อโต้แย้งได้
ไม่อนุญาตให้ใช้พารามิเตอร์เพิ่มเติมหลังจากคีย์เวิร์ด params ในการประกาศเมธอดและอนุญาตให้ใช้คีย์เวิร์ด params เพียงคีย์เวิร์ดเดียวในการประกาศเมธอด
ดังที่แสดงในตัวอย่างวิธีนี้ถูกประกาศเป็น
public static void UseParams(params int[] list)
{
for (int i = 0; i < list.Length; i++)
{
Console.Write(list[i] + " ");
}
Console.WriteLine();
}
และใช้เป็น
UseParams(1, 2, 3, 4);