ฉันกำลังอ่านC # ที่มีประสิทธิภาพโดย Bill Wagner ในรายการ 14 - ลดลอจิกการเริ่มต้นที่ซ้ำกันเขาแสดงตัวอย่างต่อไปนี้ของการใช้คุณสมบัติพารามิเตอร์ทางเลือกใหม่ในตัวสร้าง:
public MyClass(int initialCount = 0, string name = "")
สังเกตว่าเขาใช้""
แทนstring.Empty
.
เขาแสดงความคิดเห็น:
คุณจะสังเกตเห็น [ในตัวอย่างด้านบน] ว่าตัวสร้างที่สองระบุ "" สำหรับค่าเริ่มต้นของพารามิเตอร์nameแทนที่จะเป็นแบบธรรมเนียม
string.Empty
พารามิเตอร์มากกว่าจารีตประเพณีมากขึ้นนั่นเป็นเพราะstring.Empty
ไม่ใช่ค่าคงที่เวลาคอมไพล์ เป็นคุณสมบัติคงที่ที่กำหนดไว้ในคลาสสตริง เนื่องจากไม่ใช่ค่าคงที่ในการคอมไพล์คุณจึงไม่สามารถใช้เป็นค่าเริ่มต้นสำหรับพารามิเตอร์ได้
หากเราไม่สามารถใช้ไฟล์ string.Empty
แตติกได้ในทุกสถานการณ์นั่นจะไม่ทำให้จุดประสงค์ของมันเสียไปหรือ? ฉันคิดว่าเราจะใช้มันเพื่อให้แน่ใจว่าเรามีวิธีการอ้างถึงสตริงว่างโดยไม่ขึ้นกับระบบ ความเข้าใจของฉันผิดหรือเปล่า? ขอบคุณ.
อัปเดต
เพียงติดตามความคิดเห็น ตาม MSDN:
พารามิเตอร์ทางเลือกแต่ละตัวมีค่าดีฟอลต์เป็นส่วนหนึ่งของนิยาม หากไม่มีการส่งอาร์กิวเมนต์สำหรับพารามิเตอร์นั้นจะใช้ค่าเริ่มต้น ค่าเริ่มต้นต้องเป็นค่าคงที่
จากนั้นเราจะไม่สามารถใช้System.Environment.NewLine
อย่างใดอย่างหนึ่งหรือใช้อ็อบเจ็กต์ที่สร้างอินสแตนซ์ใหม่เป็นค่าเริ่มต้น ฉันยังไม่ได้ใช้ VS2010 และมันก็น่าผิดหวัง!