คำถามติดแท็ก c#

C # (ออกเสียงว่า "ดูคม") เป็นภาษาการเขียนโปรแกรมหลายกระบวนทัศน์ในระดับสูงพิมพ์แบบคงที่พัฒนาโดย Microsoft รหัส C # มักกำหนดเป้าหมายกลุ่มเครื่องมือ. NET ของ Microsoft และรันไทม์ซึ่งรวมถึง. NET Framework, .NET Core และ Xamarin เป็นต้น ใช้แท็กนี้สำหรับคำถามเกี่ยวกับโค้ดที่เขียนในข้อกำหนดทางการของ C # หรือ C #

4
มีเหตุผลสำหรับการใช้ตัวแปร C # ซ้ำใน foreach หรือไม่?
เมื่อใช้แลมบ์ดานิพจน์หรือวิธีที่ไม่ระบุตัวตนใน C # เราต้องระวังการเข้าถึงหลุมพรางปิดที่มีการแก้ไข ตัวอย่างเช่น: foreach (var s in strings) { query = query.Where(i => i.Prop == s); // access to modified closure ... } เนื่องจากการปิดการปรับเปลี่ยนรหัสดังกล่าวข้างต้นจะทำให้ทั้งหมดของคำสั่งในการค้นหาให้เป็นไปตามค่าสุดท้ายของWheres ดังที่อธิบายไว้ที่นี่สิ่งนี้เกิดขึ้นเพราะsตัวแปรที่ประกาศในforeachลูปด้านบนถูกแปลเช่นนี้ในคอมไพเลอร์: string s; while (enumerator.MoveNext()) { s = enumerator.Current; ... } แทนที่จะเป็นเช่นนี้: while (enumerator.MoveNext()) { string s; s = enumerator.Current; ... } ดังที่กล่าวไว้ที่นี่ไม่มีข้อได้เปรียบด้านประสิทธิภาพในการประกาศตัวแปรภายนอกลูปและภายใต้สถานการณ์ปกติเหตุผลเดียวที่ฉันคิดได้สำหรับการทำเช่นนี้คือถ้าคุณวางแผนที่จะใช้ตัวแปรนอกขอบเขตของลูป: string …

19
การใช้อินเตอร์เฟส IDisposable อย่างเหมาะสม
ฉันรู้จากการอ่านเอกสารของ Microsoftว่าการใช้IDisposableอินเทอร์เฟซหลักคือการล้างทรัพยากรที่ไม่มีการจัดการ สำหรับฉัน "ไม่มีการจัดการ" หมายถึงสิ่งต่าง ๆ เช่นการเชื่อมต่อฐานข้อมูลซ็อกเก็ตที่จับหน้าต่าง ฯลฯ แต่ฉันเห็นรหัสที่ใช้Dispose()วิธีการกับทรัพยากรที่มีการจัดการฟรีซึ่งดูเหมือนว่าซ้ำซ้อนกับฉันเนื่องจากตัวเก็บขยะควรดูแล สำหรับคุณ ตัวอย่างเช่น: public class MyCollection : IDisposable { private List<String> _theList = new List<String>(); private Dictionary<String, Point> _theDict = new Dictionary<String, Point>(); // Die, clear it up! (free unmanaged resources) public void Dispose() { _theList.clear(); _theDict.clear(); _theList = null; _theDict = …

18
เครื่องหมายคำถามสองข้อที่รวมกันหมายถึงอะไรใน C #
วิ่งข้ามรหัสบรรทัดนี้: FormsAuth = formsAuth ?? new FormsAuthenticationWrapper(); เครื่องหมายคำถามสองข้อหมายความว่าอย่างไร การค้นหาใน Google เป็นเรื่องยาก

30
ฉันจะแก้ไข“ เบรกพอยต์จะไม่ถูกตีในขณะนี้ได้อย่างไร ไม่มีการโหลดสัญลักษณ์สำหรับเอกสารนี้” คำเตือน?
แอปพลิเคชัน C # เดสก์ท็อปในรุ่นด่วนทำงานแล้วไม่ทำงาน 5 วินาทีในภายหลัง ฉันพยายามต่อไปนี้: ตรวจสอบให้แน่ใจว่าการกำหนดค่าการดีบักการตั้งค่าการตรวจแก้จุดบกพร่องและข้อมูลการตรวจแก้จุดบกพร่องแบบเต็มจะถูกตั้งค่าบนชุดประกอบทั้งหมด ลบโฟลเดอร์ bin และ obj ทั้งหมดและ DLLs ทั้งหมดที่เกี่ยวข้องกับโครงการจากเครื่องทั้งหมดของฉัน สร้างโครงการใหม่ที่ทำให้เกิดปัญหาตั้งแต่เริ่มต้น Reboot ฉันมี WinForms สองโครงการในโซลูชัน หนึ่งในนั้นโหลดข้อมูลการดีบัก พวกเขาทั้งคู่อ้างถึงแอสเซมบลีฉันกำลังพยายามรับข้อมูลการตรวจแก้จุดบกพร่องในลักษณะเดียวกันในไฟล์โครงการ ความคิดใด ๆ ฉันต้องการเพิ่มที่นี่ส่วนใหญ่สำหรับตัวเองเมื่อฉันกลับมาเพื่อทบทวนคำถามนี้สัญลักษณ์ที่ไม่ได้โหลดจนกว่าจะโหลดแอสเซมบลีและแอสเซมบลีไม่ได้โหลดจนกว่าจะจำเป็น หากเบรกพอยต์อยู่ในไลบรารีที่ใช้ในฟังก์ชันเดียวในแอสเซมบลีหลักของคุณเท่านั้นสัญลักษณ์จะไม่ถูกโหลด (และจะแสดงเบรกพอยต์ว่าไม่ได้ถูกตี) จนกว่าจะเรียกใช้ฟังก์ชันนั้น


14
การตรวจสอบประเภท: typeof, GetType หรือคืออะไร
ฉันเคยเห็นหลายคนใช้รหัสต่อไปนี้: Type t = typeof(obj1); if (t == typeof(int)) // Some code here แต่ฉันรู้ว่าคุณสามารถทำได้เช่นกัน: if (obj1.GetType() == typeof(int)) // Some code here หรือสิ่งนี้: if (obj1 is int) // Some code here โดยส่วนตัวแล้วฉันรู้สึกว่าอันสุดท้ายนั้นสะอาดที่สุด แต่มีบางอย่างที่ฉันขาดหายไปหรือไม่? อันไหนดีที่สุดที่จะใช้หรือมันเป็นการตั้งค่าส่วนตัว?
1512 c#  types  typeof  gettype 

5
ลองจับโค้ดของฉันให้เร็วขึ้นไหม?
ฉันเขียนโค้ดเพื่อทดสอบผลกระทบของการลองจับ แต่เห็นผลลัพธ์ที่น่าประหลาดใจ static void Main(string[] args) { Thread.CurrentThread.Priority = ThreadPriority.Highest; Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.RealTime; long start = 0, stop = 0, elapsed = 0; double avg = 0.0; long temp = Fibo(1); for (int i = 1; i < 100000000; i++) { start = Stopwatch.GetTimestamp(); temp = Fibo(100); stop = Stopwatch.GetTimestamp(); …

30
คุณสมบัติที่ซ่อนของ C #? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ สิ่งนี้อยู่ในใจของฉันหลังจากฉันเรียนรู้จากคำถามนี้ : where T : struct พวกเราผู้พัฒนา C # ทุกคนรู้พื้นฐานของ C # ฉันหมายถึงการประกาศเงื่อนไขเงื่อนไขลูปตัวดำเนินการ ฯลฯ พวกเราบางคนเข้าใจสิ่งต่าง ๆ เช่นGenerics , ประเภทนิรนาม , lambdas , LINQ , ... แต่คุณสมบัติหรือลูกเล่นที่ซ่อนอยู่ของ C # ที่แม้แต่แฟน C #, ผู้ติดยา, ผู้เชี่ยวชาญแทบจะไม่รู้คืออะไร? นี่คือคุณสมบัติที่เปิดเผยแล้ว: คำสำคัญ yieldโดยMichael Stum varโดยMichael …
1475 c#  hidden-features 

12
แอตทริบิวต์ [Flags] Enum หมายถึงอะไรใน C #
บางครั้งฉันเห็น enum เช่นนี้: [Flags] public enum Options { None = 0, Option1 = 1, Option2 = 2, Option3 = 4, Option4 = 8 } ฉันไม่เข้าใจว่า[Flags]แอตทริบิวต์ทำอะไร ใครมีคำอธิบายหรือตัวอย่างที่ดีที่พวกเขาสามารถโพสต์?
1445 c#  enums  flags 

14
เหตุใดจึงสำคัญที่ต้องแทนที่ GetHashCode เมื่อเมธอด Equals ถูกเขียนทับ
รับคลาสต่อไปนี้ public class Foo { public int FooId { get; set; } public string FooName { get; set; } public override bool Equals(object obj) { Foo fooItem = obj as Foo; if (fooItem == null) { return false; } return fooItem.FooId == this.FooId; } public override int GetHashCode() { // …
1444 c#  overriding  hashcode 

27
ทำไมไม่สืบทอดจากรายการ <T>
เมื่อวางแผนโปรแกรมของฉันฉันมักจะเริ่มต้นด้วยความคิดอย่าง: ทีมฟุตบอลเป็นเพียงรายชื่อผู้เล่นฟุตบอล ดังนั้นฉันควรเป็นตัวแทนด้วย: var football_team = new List&lt;FootballPlayer&gt;(); การเรียงลำดับของรายการนี้แสดงถึงลำดับที่ผู้เล่นแสดงไว้ในบัญชีรายชื่อ แต่ฉันตระหนักในภายหลังว่าทีมยังมีคุณสมบัติอื่น ๆ นอกเหนือจากรายชื่อผู้เล่นที่ต้องบันทึกไว้ ตัวอย่างเช่นคะแนนรวมที่ดำเนินการอยู่ในฤดูกาลนี้งบประมาณปัจจุบันสีสม่ำเสมอstringชื่อตัวแทนของทีม ฯลฯ ดังนั้นฉันคิดว่า: โอเคทีมฟุตบอลก็เหมือนกับรายการของผู้เล่น แต่นอกจากนี้ยังมีชื่อ (a string) และคะแนนรวมทั้งหมด (an int) .NET ไม่มีคลาสสำหรับเก็บทีมฟุตบอลดังนั้นฉันจะสร้างคลาสของตัวเอง โครงสร้างที่มีอยู่ที่คล้ายกันและเกี่ยวข้องมากที่สุดคือList&lt;FootballPlayer&gt;ดังนั้นฉันจะสืบทอดจากมัน: class FootballTeam : List&lt;FootballPlayer&gt; { public string TeamName; public int RunningTotal } แต่มันกลับกลายเป็นว่าแนวทางในการพูดว่าคุณไม่ควรสืบทอดมาจาก List&lt;T&gt;ฉันสับสนอย่างละเอียดโดยแนวทางนี้สองประการ ทำไมจะไม่ล่ะ? เห็นได้ชัดว่ามีการเพิ่มประสิทธิภาพอย่างใดเพื่อให้ได้ประสิทธิภาพList งั้นเหรอ ฉันจะทำให้เกิดปัญหาประสิทธิภาพการทำงานถ้าฉันขยายList? จะเกิดอะไรขึ้น เหตุผลที่ผมเคยเห็นก็คือการที่Listให้บริการโดยไมโครซอฟท์และผมสามารถควบคุมมันไม่ได้ดังนั้นฉันไม่สามารถเปลี่ยนได้ในภายหลังหลังจากเปิดเผย "ประชาชน API" แต่ฉันพยายามเข้าใจสิ่งนี้ API สาธารณะคืออะไรและทำไมฉันจึงควรใส่ใจ …
1398 c#  .net  list  oop  inheritance 


30
ฉันจะอัพเดต GUI จากเธรดอื่นได้อย่างไร?
ซึ่งเป็นวิธีที่ง่ายที่สุดในการปรับปรุงLabelจากที่อื่นThread? ฉันมีการFormทำงานthread1และจากที่ฉันเริ่มหัวข้ออื่น ( thread2) ในขณะที่thread2กำลังประมวลผลไฟล์บางไฟล์ฉันต้องการที่จะอัปเดตLabelในFormกับสถานะปัจจุบันของการthread2ทำงานของ ฉันจะทำสิ่งนั้นได้อย่างไร

28
เมื่อใดที่ฉันควรใช้ struct แทนที่จะเป็นคลาสใน C #
เมื่อใดที่คุณควรใช้ struct และไม่ใช่คลาสใน C # รูปแบบความคิดของฉันอยู่ที่ structs จะใช้ในครั้งเมื่อมีรายการอยู่เพียงชุดของประเภทค่า วิธีที่จะทำให้พวกเขามีเหตุผลทั้งหมดเข้าด้วยกันอย่างมีเหตุผล ฉันเจอกฎเหล่านี้ที่นี่ : struct ควรแสดงถึงค่าเดียว struct ควรมี footprint หน่วยความจำน้อยกว่า 16 ไบต์ ไม่ควรเปลี่ยนแปลง struct หลังจากการสร้าง กฎเหล่านี้ทำงานอย่างไร struct หมายถึงความหมายอะไร?
1390 c#  struct 

17
คงที่อ่านได้อย่างเดียวเทียบกับ
ฉันได้อ่านเกี่ยวกับconstและstatic readonlyฟิลด์ เรามีบางคลาสที่มีค่าคงที่เท่านั้น ใช้สำหรับสิ่งต่าง ๆ ในระบบของเรา ดังนั้นฉันสงสัยว่าการสังเกตของฉันถูกต้องหรือไม่: ค่าคงที่เหล่านี้ควรเป็นค่าstatic readonlyสำหรับทุกสิ่งที่เป็นสาธารณะหรือไม่ และใช้constสำหรับค่าภายใน / การป้องกัน / ส่วนตัวเท่านั้น? คุณแนะนำเมนูใด? ฉันควรจะไม่ใช้static readonlyฟิลด์ แต่ควรใช้คุณสมบัติหรือไม่
1386 c#  constants 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.