หน้าแรก
หน้าแรก
Generics ถูกเพิ่มในเวอร์ชัน 2.0 ของ C# และเป็นหนึ่งในแนวคิดที่สำคัญที่สุดในภาษา สิ่งเหล่านี้ทำให้คุณสามารถเขียนโค้ดที่นำกลับมาใช้ใหม่ได้ ประสิทธิภาพสูง ซึ่งปลอดภัยต่อการพิมพ์ในขณะที่คอมไพล์ เมื่อใช้ชื่อสามัญ คุณจะใช้ประเภทในโค้ดได้โดยไม่ต้องทราบล่วงหน้า Generics ถูกใช้ในหลายที่ใน .NET รวมถึงคอลเล็ก
หากคุณเป็นโปรแกรมเมอร์ C ผู้รับมอบสิทธิ์ถือเป็นตัวชี้ไปยังฟังก์ชันได้ อย่างไรก็ตาม ผู้รับมอบสิทธิ์ใน C # เป็นมากกว่าตัวชี้ฟังก์ชันทั่วไป บทความนี้อธิบายแนวคิดของผู้รับมอบสิทธิ์และการนำไปใช้ในการเขียนโปรแกรมแบบวันต่อวัน โดยพื้นฐานแล้ว ผู้ได้รับมอบหมายให้ระดับของทางอ้อม พวกเขาห่อหุ้มส่วนของรหัสที่สาม
อินเทอร์เฟซกำหนดสัญญาที่จะดำเนินการโดยคลาสหรือโครงสร้าง โดยสามารถประกอบด้วยเมธอด คุณสมบัติ เหตุการณ์ และตัวสร้างดัชนี อินเทอร์เฟซคล้ายกับคลาส ยกเว้นว่าไม่มีข้อมูลใด ๆ และระบุเฉพาะพฤติกรรมที่สามารถทำได้ (หรือแม่นยำกว่านั้นคือคลาสที่ปรับใช้สามารถทำได้) คลาสสามารถใช้อินเทอร์เฟซได้ตั้งแต่หนึ่งอินเทอร์เ
C# มีโอเปอเรเตอร์สามตัวต่อไปนี้เพื่อจัดการกับค่า null - ตัวดำเนินการการรวมค่า null (??) ช่วยให้คุณได้รับค่าของตัวแปรหากไม่ใช่ค่าว่าง หรือระบุค่าเริ่มต้นที่สามารถใช้ได้ มันแทนที่นิพจน์ต่อไปนี้ใน C# - string resultOne = value != null ? value : "default_value"; ด้วยนิพจน์ต่อไปนี้ − string
ใน C # ทั้งคีย์เวิร์ด const และ readonly ใช้เพื่อกำหนดค่าที่ไม่เปลี่ยนรูปแบบซึ่งไม่สามารถแก้ไขได้เมื่อประกาศแล้ว อย่างไรก็ตาม ทั้งสองมีความแตกต่างที่สำคัญบางประการ คอนแทค ตัวแก้ไข const ประกาศค่าคงที่ที่ทราบในเวลาคอมไพล์และไม่เปลี่ยนแปลง กล่าวคือ ค่าเหล่านี้ไม่เปลี่ยนรูป ใน C # คุณสามารถทำเครื่องหม
อาร์เรย์แสดงถึงองค์ประกอบจำนวนคงที่ของประเภทที่กำหนด องค์ประกอบจะถูกเก็บไว้ในบล็อกหน่วยความจำที่อยู่ติดกันและให้การเข้าถึงองค์ประกอบที่มีประสิทธิภาพสูงตราบใดที่คุณทราบดัชนีขององค์ประกอบ ไวยากรณ์ C# ในการประกาศและเริ่มต้นอาร์เรย์มีดังนี้ - // create a string array to hold 5 languages string[] langua
.NET มีเนมสเปซจำนวนมากและอีกมากมาย หากคุณรวมไลบรารีของบุคคลที่สาม อย่างไรก็ตาม มีบางส่วนที่คุณจะใช้ซ้ำแล้วซ้ำอีก ต่อไปนี้คือ 20 ข้อที่จะช่วยให้คุณผ่าน 80% ของปัญหาการเขียนโปรแกรมทั่วไปที่เกิดขึ้นซ้ำๆ ได้ ระบบ ประกอบด้วยประเภทพื้นฐานที่สุด ซึ่งรวมถึงคลาส โครงสร้าง enums เหตุการณ์ ส่วนต่อประสาน ฯลฯ ท
ใน C # สตริงจะไม่เปลี่ยนรูป นั่นหมายความว่าคุณไม่สามารถแก้ไขสตริงได้เมื่อสร้างแล้ว การแก้ไขใดๆ ในสตริงจะคืนค่าสตริงใหม่ที่มีการแก้ไข โดยปล่อยให้สตริงเดิมไม่เสียหาย string word = "aaabbbccc"; string newWord = word.Replace('b', 'd'); Console.WriteLine(word); // prints aaabbbc
เนมสเปซ System.Reflection ใน C# เนมสเปซ System.Reflection ใน C# มีประเภทที่ให้ข้อมูลเกี่ยวกับแอสเซมบลี โมดูล สมาชิก พารามิเตอร์ และรายการอื่นๆ ในโค้ดโดยการตรวจสอบข้อมูลเมตา คลาส Assembly ในเนมสเปซนี้แสดงถึงแอสเซมบลี โดยทั่วไปคุณสามารถเข้าถึงได้โดยใช้คุณสมบัติ Assembly ใน Type เอกลักษณ์ของแอสเซมบลีป
การพึ่งพาเป็นวัตถุที่วัตถุอื่นขึ้นอยู่กับ การพึ่งพาการฉีด (หรือการผกผัน) นั้นเป็นการจัดหาวัตถุที่วัตถุต้องการโดยพื้นฐาน แทนที่จะให้วัตถุนั้นสร้างเอง เป็นเทคนิคที่มีประโยชน์ที่ช่วยให้การทดสอบง่ายขึ้น เนื่องจากช่วยให้คุณจำลองการขึ้นต่อกันได้ ตัวอย่างเช่น ถ้าคลาส A เรียกใช้เมธอดบนคลาส B ซึ่งในทางกลับก
เมทริกซ์คือ Toeplitz หากทุกเส้นทแยงมุมจากบนซ้ายไปล่างขวามีองค์ประกอบเหมือนกัน ตัวอย่างที่ 1 [[1,2,3,4], [5,1,2,3], [9,5,1,2]] ผลผลิต − true ในตารางด้านบน เส้นทแยงมุมคือ − "[9]", "[5, 5]", "[1, 1, 1]", "[2, 2, 2]", "[3, 3]", "[4]". ในแต
วิธีแก้ปัญหาเบื้องต้นสำหรับปัญหานี้คือการสแกนองค์ประกอบทั้งหมดที่จัดเก็บไว้ในเมทริกซ์อินพุตเพื่อค้นหาคีย์ที่ระบุ วิธีค้นหาเชิงเส้นนี้ใช้เวลา O(MN) หากขนาดของเมทริกซ์คือ MxN เมทริกซ์สามารถดูเป็นอาร์เรย์หนึ่งมิติที่เรียงลำดับได้ หากแถวทั้งหมดในเมทริกซ์อินพุตถูกต่อกันในลำดับจากบนลงล่าง จะสร้างอาร์เรย์
วิธีแก้ปัญหาเบื้องต้นสำหรับปัญหานี้คือการสแกนองค์ประกอบทั้งหมดที่จัดเก็บไว้ในเมทริกซ์อินพุตเพื่อค้นหาคีย์ที่ระบุ วิธีค้นหาเชิงเส้นนี้ใช้เวลา O(MN) หากขนาดของเมทริกซ์คือ MxN ต้องสแกนเมทริกซ์จากมุมขวาบน หากองค์ประกอบการค้นหามากกว่าองค์ประกอบด้านขวาบน ให้เพิ่มแถวหรือลดคอลัมน์ โค้ดด้านล่างพัฒนาฟังก์ชัน
แนวทางง่ายๆ คือ เราสามารถสร้างลูปที่ซ้อนกันได้สามลูป และตรวจสอบทีละรายการว่าผลรวมขององค์ประกอบทั้งสามนั้นเป็นศูนย์หรือไม่ หากผลรวมขององค์ประกอบทั้งสามเป็นศูนย์ ให้พิมพ์องค์ประกอบ ความซับซ้อนของเวลา − O(n3 ) ความซับซ้อนของอวกาศ − O(1) เราสามารถใช้โครงสร้างข้อมูลชุดที่ไม่เรียงลำดับเพื่อเก็บแต่ละค่าของ
สร้าง 2 อาร์เรย์ที่แตกต่างกัน leftDis และ rightDis leftDis จะเก็บค่าเมื่อย้ายจากทิศทางซ้าย rightDis จะเก็บค่าที่สั้นที่สุดเมื่อย้ายจากขวา เมื่อใดก็ตามที่ตรงกับอักขระให้เพิ่มตำแหน่งของอักขระลงในอาร์เรย์ ในขั้นตอนสุดท้ายให้คำนวณค่าต่ำสุดของอาร์เรย์ทั้งสอง ความซับซ้อนของเวลา − O(n) ความซับซ้อนของอวกาศ
สร้าง 2 อาร์เรย์ที่แตกต่างกัน leftDis และ rightDis leftDis จะเก็บค่าเมื่อย้ายจากทิศทางซ้าย rightDis จะเก็บค่าที่สั้นที่สุดเมื่อย้ายจากขวา เมื่อใดก็ตามที่ตรงกับอักขระให้เพิ่มตำแหน่งของอักขระลงในอาร์เรย์ ในขั้นตอนสุดท้ายให้คำนวณค่าสูงสุดของอาร์เรย์ทั้งสอง ความซับซ้อนของเวลา − O(n) ความซับซ้อนของอวกา
รูปแบบ Two Pointers และคล้ายกับ Triplet Sum ถึง Zero เราสามารถทำตามแนวทางเดียวกันนี้เพื่อวนซ้ำผ่านอาร์เรย์ โดยนำตัวเลขมาทีละตัว ในทุกขั้นตอน เราจะบันทึกส่วนต่างระหว่างแฝดสามกับหมายเลขเป้าหมาย และในแต่ละขั้นตอน เราจะเปรียบเทียบกับความแตกต่างของเป้าหมายขั้นต่ำจนถึงตอนนี้ เพื่อที่ในท้ายที่สุด เราสามารถ
วิธีง่ายๆ คือ เราสามารถสร้างลูปที่ซ้อนกันสี่วง และตรวจสอบทีละรายการว่าผลรวมขององค์ประกอบทั้งสี่นั้นเป็นศูนย์หรือไม่ หากผลรวมขององค์ประกอบทั้งสี่เป็นศูนย์ ให้พิมพ์องค์ประกอบ ความซับซ้อนของเวลา − O(n4 ) ความซับซ้อนของอวกาศ − O(1) เราสามารถใช้โครงสร้างข้อมูลชุดที่ไม่เรียงลำดับเพื่อเก็บแต่ละค่าของอาร
รูปแบบตัวชี้สองตัวและคล้ายกับสี่เท่า Sum ถึง Zero เราสามารถทำตามแนวทางเดียวกันนี้เพื่อวนซ้ำผ่านอาร์เรย์ โดยนำตัวเลขมาทีละตัว ในทุกขั้นตอน เราจะบันทึกความแตกต่างระหว่างสี่เท่าและหมายเลขเป้าหมาย และในแต่ละขั้นตอน เราจะเปรียบเทียบกับความแตกต่างของเป้าหมายขั้นต่ำจนถึงตอนนี้ เพื่อที่ในท้ายที่สุด เราสามาร
สามเหลี่ยมของปาสกาลคือรูปแบบตัวเลขในรูปสามเหลี่ยม Pascals Triangle มีแอปพลิเคชันมากมายในด้านคณิตศาสตร์และสถิติ รวมถึงความสามารถในการช่วยคุณคำนวณชุดค่าผสม แต่ละตัวเลขในสามเหลี่ยมคือผลรวมของตัวเลขสองตัวที่อยู่ด้านบน ตัวอย่างเช่น แถวที่ 4 เป็นผลรวมของ 3 และ 3 ในแถวด้านบน ตัวเลขตัวแรกและตัวสุดท้ายในแถวใ