ไวยากรณ์:
คำสั่ง C# “using” ใช้เพื่อจัดการทรัพยากรที่ต้องกำจัดทิ้งอย่างชัดเจนสะดวกและปลอดภัย มันเป็นไปตามไวยากรณ์เฉพาะดังต่อไปนี้:
โดยใช้ ( ทรัพยากรชนิดทรัพยากร = ประเภททรัพยากรใหม่ ( ) ) { // รหัส }- คีย์เวิร์ด 'using' ใช้เพื่อประกาศคำสั่ง 'using'
- หลังคีย์เวิร์ด “using” คุณจะต้องระบุประเภททรัพยากรที่คุณต้องการใช้งาน ตามด้วยชื่อตัวแปรที่แสดงถึงทรัพยากรภายในบล็อก วัตถุใดๆ ที่ดำเนินการอินเทอร์เฟซ IDisposable มีคุณสมบัติ คุณสามารถดำเนินการกับทรัพยากรภายในบล็อกได้ตามความจำเป็น
- ถัดไป เครื่องหมายเท่ากับ (=) ใช้เพื่อกำหนดอินสแตนซ์ใหม่ของประเภททรัพยากรให้กับตัวแปร
- ในที่นี้ คำสำคัญ 'ใหม่' ถูกใช้เพื่อสร้างออบเจ็กต์ใหม่ของประเภททรัพยากร
- การกำหนดค่าเริ่มต้นหรือการกำหนดค่าเพิ่มเติมใดๆ สามารถทำได้ภายในวงเล็บหลังคีย์เวิร์ดใหม่
- สุดท้าย คุณใส่โค้ดที่ใช้ทรัพยากรภายในวงเล็บปีกกา {}
ตัวอย่างที่ 1:
เริ่มต้นด้วยตัวอย่างโค้ด C# เพื่อสาธิตการใช้งานคำสั่ง 'using' ของ C# ในบทความนี้ รหัสที่กำหนดครอบคลุมโปรแกรม C# ที่อ่านเนื้อหาของไฟล์ข้อความโดยใช้คลาส 'StreamReader' ภายในคำสั่ง 'using'
โปรแกรมเริ่มต้นด้วยการนำเข้าเนมสเปซที่จำเป็น System และ System.IO ซึ่งมีคลาสสำหรับการดำเนินการอินพุต/เอาท์พุตและการจัดการไฟล์ โปรแกรมจะกำหนดคลาสที่เรียกว่า “Dummy” ภายในคลาส “Dummy” มีเมธอด Main() ซึ่งควรถือเป็นรายการสำหรับโปรแกรม C# ใดๆ เพื่อรันโปรแกรมโดยรวมตั้งแต่ต้นจนจบ
เมธอด Main() เริ่มต้นด้วยการประกาศตัวแปรสตริง “fp” และกำหนดค่า “test.txt” ให้กับมัน นี่แสดงถึงเส้นทางไฟล์ของไฟล์ข้อความที่จะอ่าน เพื่อรับมือกับข้อผิดพลาดที่อาจเกิดขึ้นเมื่ออ่านไฟล์ จึงมีการใช้บล็อก try-catch
ภายในบล็อก try คำสั่ง 'using' ใช้เพื่อสร้างอินสแตนซ์ของคลาส 'StreamReader' งานในการทำความเข้าใจเนื้อหาจากไฟล์ตกเป็นของ “StreamReader” เส้นทางไฟล์ที่จัดเก็บไว้ในตัวแปร “fp” จะถูกส่งผ่านไปยังตัวสร้าง “StreamReader” ระบุไฟล์ที่จะอ่าน
ภายในบล็อก 'การใช้' เนื้อหาของไฟล์จะถูกตรวจสอบทีละบรรทัดโดยใช้การวนซ้ำ 'ในขณะที่' เว้นแต่บรรทัดสุดท้ายของเอกสารจะปรากฏขึ้น ลูปอ่านบรรทัดโดยใช้เมธอด ReadLine() ของ “StreamReader” และกำหนดให้กับตัวแปรสตริง “l” หากบรรทัดไม่เป็นค่าว่าง บรรทัดนั้นจะถูกพิมพ์ไปยังคอนโซลโดยใช้ Console.WriteLine(l)
เมื่อถึงจุดสิ้นสุดของไฟล์และไม่มีบรรทัดให้อ่านอีกต่อไป บล็อก 'using' จะออกจากบล็อกและออบเจ็กต์ 'StreamReader' จะถูกกำจัดโดยอัตโนมัติเนื่องจากคำสั่ง 'using' catch block จะเปิดใช้งานทุกครั้งที่มี IOException เกิดขึ้นขณะอ่านเอกสาร ได้รับข้อความแสดงข้อยกเว้นโดยใช้ e.Message และข้อความแสดงข้อผิดพลาดแสดงบนคอนโซลโดยใช้ Console.WriteLine()
การทำงานของโปรแกรมเสร็จสิ้นและเอาต์พุตคอนโซลจะปรากฏขึ้น สมมติว่ามีไฟล์ 'test.txt' อยู่และมีข้อความหลายบรรทัด ผลลัพธ์ของโค้ดนี้คือเนื้อหาของไฟล์ที่พิมพ์บนคอนโซลดังที่แสดงในรูปภาพที่แนบมาต่อไปนี้ ทุกบรรทัดจะแสดงแยกกันในเอาต์พุต:
โดยใช้ระบบ ;โดยใช้ระบบ ไอโอ ;
คลาสดัมมี่ {
คงที่ เป็นโมฆะ หลัก ( ) {
สตริง fp = 'test.txt' ;
พยายาม {
โดยใช้ ( โปรแกรมอ่าน StreamReader = StreamReader ใหม่ ( เอฟพี ) )
{
สตริง ล ;
ในขณะที่ ( ( ล = ผู้อ่าน อ่านไลน์ ( ) ) != โมฆะ )
{
คอนโซล เขียนไลน์ ( ล ) ;
}
}
}
จับ ( IOException e ) {
คอนโซล เขียนไลน์ ( 'เกิดข้อผิดพลาด:' + มันคือ. ข้อความ ) ;
}
}
}
บันทึก: หากไม่มีไฟล์ “test.txt” หรือมีปัญหาในการเข้าถึงหรือการอ่านไฟล์ catch block จะถูกดำเนินการ และข้อความแสดงข้อผิดพลาดจะแสดงบนคอนโซลซึ่งระบุถึงข้อยกเว้นเฉพาะที่เกิดขึ้น
ตัวอย่างที่ 2:
นี่เป็นอีกตัวอย่างง่ายๆ ที่สาธิตการใช้คำสั่ง C# “using” กับ StreamWriter เพื่อเขียนข้อมูลลงในไฟล์ นี่คือคำอธิบายของโค้ดพร้อมกับผลลัพธ์ที่คาดหวัง รหัสเริ่มต้นด้วยการประกาศคลาส 'Dummy' และวิธี 'Main' ซึ่งจะเริ่มและสิ้นสุดโปรแกรมในที่สุด
ภายในวิธีการ 'Main' ตัวแปรสตริง 'fp' จะถูกประกาศและเริ่มต้นด้วยเส้นทางไฟล์ 'test.txt' เอกสารที่เขียนข้อมูลไว้จะแสดงด้วยสิ่งนี้ เพื่อจัดการกับ IOException ที่เป็นไปได้ที่อาจเกิดขึ้นตลอดกระบวนการเขียนเอกสาร โปรแกรมจึงถูกรวมไว้ในบล็อก try-catch
ภายในบล็อก try ออบเจ็กต์ StreamWriter ชื่อ 'writer' จะถูกสร้างขึ้นและเริ่มต้นโดยใช้คำสั่ง 'using' StreamWriter มีหน้าที่เขียนอักขระลงในไฟล์ เนื้อหาสองบรรทัดที่แยกกันจะถูกเพิ่มลงในเอกสารภายในส่วน 'การใช้' ผ่านทางฟังก์ชัน WriteLine ของอ็อบเจ็กต์ตัวเขียน เมื่อออกจากบล็อกแล้ว เมธอด Dispose() ของ StreamWriter จะถูกเรียกโดยอัตโนมัติ ซึ่งช่วยให้มั่นใจได้ว่าข้อมูลที่ค้างอยู่จะถูกเขียนลงในไฟล์และทรัพยากรที่จำเป็นจะถูกปล่อยออกมา
สุดท้าย นอกบล็อก 'การใช้' 'เขียนข้อมูลสำเร็จ' ข้อความจะปรากฏบนคอนโซลซึ่งแสดงให้เห็นว่าการดำเนินการเขียนเอกสารสำเร็จและปราศจากข้อผิดพลาด catch block จะเปิดใช้งานหากมี IOException ใด ๆ เกิดขึ้นระหว่างกระบวนการเขียนเอกสาร ในกรณีนั้น ข้อความแสดงข้อผิดพลาดพร้อมกับข้อความยกเว้นเฉพาะจะแสดงบนคอนโซล
โดยใช้ระบบ ;โดยใช้ระบบ ไอโอ ;
คลาสดัมมี่ {
คงที่ เป็นโมฆะ หลัก ( ) {
สตริง fp = 'test.txt' ;
พยายาม {
โดยใช้ ( นักเขียน StreamWriter = StreamWriter ใหม่ ( เอฟพี ) )
{
นักเขียน เขียนไลน์ ( “สวัสดีซีชาร์ป!” ) ;
นักเขียน เขียนไลน์ ( “นี่คือข้อความทดสอบ” ) ;
}
คอนโซล เขียนไลน์ ( 'เขียนข้อมูลสำเร็จแล้ว' ) ;
}
จับ ( IOException e ) {
คอนโซล เขียนไลน์ ( 'เกิดข้อผิดพลาด:' + มันคือ. ข้อความ ) ;
}
}
}
โดยสรุป โค้ดจะสร้างออบเจ็กต์ StreamWriter โดยใช้คำสั่ง 'using' เขียนข้อความสองบรรทัดลงในไฟล์ จากนั้นจะกำจัด StreamWriter โดยอัตโนมัติ หากการดำเนินการเขียนสำเร็จ ซอฟต์แวร์จะสร้างข้อความแสดงความสำเร็จ มิฉะนั้น จะส่งเสียงข้อความแสดงความล้มเหลวหากมี IOException เกิดขึ้น
บทสรุป
คำสั่ง 'การใช้' ของ C# นำเสนอวิธีปฏิบัติที่ปลอดภัยในการจัดการทรัพยากรที่ต้องมีการกำจัดอย่างชัดเจน คุณอาจรับประกันได้ว่าขั้นตอนการล้างข้อมูลที่จำเป็นจะดำเนินการโดยอัตโนมัติ และลดโอกาสที่ทรัพยากรจะรั่วไหลโดยการปิดการใช้ทรัพยากรภายในบล็อก 'การใช้งาน' สิ่งนี้จะเพิ่มความน่าเชื่อถือของรหัสของคุณ