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

C # เป็นภาษาการเขียนโปรแกรมเชิงวัตถุที่มีการจัดการและรวบรวมขยะที่สร้างขึ้นโดย Microsoft ควบคู่ไปกับแพลตฟอร์ม. NET

2
ฉันควรใช้วิธีการจากโรงงานแทนที่จะเป็นตัวสร้าง ฉันสามารถเปลี่ยนสิ่งนั้นและยังเข้ากันได้แบบย้อนหลังได้หรือไม่
ปัญหา สมมติว่าฉันมีคลาสที่เรียกว่าDataSourceมีReadDataวิธี (และบางทีคนอื่น ๆ แต่ให้สิ่งที่ง่าย) เพื่ออ่านข้อมูลจาก.mdbไฟล์: var source = new DataSource("myFile.mdb"); var data = source.ReadData(); ไม่กี่ปีต่อมาฉันตัดสินใจว่าฉันต้องการให้สามารถรองรับ.xmlไฟล์เพิ่มเติมจาก.mdbไฟล์เป็นแหล่งข้อมูล การนำไปใช้สำหรับ "การอ่านข้อมูล" นั้นค่อนข้างแตกต่างกันสำหรับ.xmlและ.mdbไฟล์ ดังนั้นถ้าฉันจะออกแบบระบบตั้งแต่เริ่มต้นฉันจะนิยามมันดังนี้: abstract class DataSource { abstract Data ReadData(); static DataSource OpenDataSource(string fileName) { // return MdbDataSource or XmlDataSource, as appropriate } } class MdbDataSource : DataSource { override Data ReadData() { …

5
อะไรคือทางเลือกในการตั้งโปรแกรมการทำงานของอินเตอร์เฟส?
หากฉันต้องการตั้งโปรแกรมในรูปแบบ "ฟังก์ชั่น" ฉันจะใช้อะไรแทนอินเตอร์เฟสได้บ้าง? interface IFace { string Name { get; set; } int Id { get; } } class Foo : IFace { ... } อาจจะTuple<>? Tuple<Func<string> /*get_Name*/, Action<String> /*set_Name*/, Func<int> /*get_Id*/> Foo; เหตุผลเดียวที่ฉันใช้อินเทอร์เฟซตั้งแต่แรกก็เพราะฉันต้องการให้มีคุณสมบัติ / วิธีการบางอย่างอยู่เสมอ แก้ไข:รายละเอียดเพิ่มเติมบางอย่างเกี่ยวกับสิ่งที่ฉันคิด / พยายาม บอกว่าฉันมีวิธีที่ใช้สามฟังก์ชั่น: static class Blarf { public static void DoSomething(Func<string> getName, Action<string> …

3
เชื่อมโยงระหว่างเด็กกับผู้ปกครอง - ความคิดที่ไม่ดี?
ฉันมีสถานการณ์ที่พ่อแม่ของฉันรู้ว่ามันเป็นลูก (duh) แต่ฉันต้องการให้เด็กสามารถอ้างอิงผู้ปกครองได้ เหตุผลสำหรับเรื่องนี้คือฉันต้องการให้เด็กมีความสามารถในการกำหนดตัวเองว่าสำคัญที่สุดหรือสำคัญที่สุดเมื่อรู้สึกเช่นนั้น เมื่อเด็กทำสิ่งนี้มันจะย้ายไปที่ด้านบนหรือด้านล่างของลูกของผู้ปกครอง ในอดีตที่ผ่านมาฉันเคยใช้คุณสมบัติ WeakReference กับเด็กเพื่ออ้างอิงย้อนกลับทีโอทีพ่อแม่ แต่ฉันรู้สึกว่ามันเพิ่มค่าใช้จ่ายที่น่ารำคาญ แต่บางทีมันอาจเป็นวิธีที่ดีที่สุดที่จะทำ นี่เป็นความคิดที่ไม่ดีใช่ไหม คุณจะใช้ความสามารถนี้แตกต่างกันอย่างไร อัปเดต 1: การเพิ่มบริบทเพิ่มเติม นี่คือระบบการแสดงผลดังนั้นคอนเทนเนอร์พาเรนต์คือรายการของ windows ที่จัดกลุ่มเข้าด้วยกัน รายการย่อย (หน้าต่าง) ที่ระบุว่า "ฉันสำคัญที่สุด!" ต้องการแสดงผลโดยทั่วไปที่ด้านบนของหน้าต่างที่เหลือ พาเรนต์เป็นเพียงคอนเทนเนอร์โลจิคัลเพื่อจัดกลุ่มเด็กเหล่านี้เข้าด้วยกัน ฉันสามารถดูว่าการเพิ่มกิจกรรมเพื่อส่งสัญญาณคำขอให้อยู่ด้านบนเป็นความคิดที่ดี แต่การนำไปปฏิบัติ (สิ่งที่เด็กต้องการทำกับผู้ปกครอง) ทำไมคุณไม่ต้องการให้มีการเชื่อมโยงกับผู้ปกครอง? รายการที่เชื่อมโยงเป็นทวีคูณทำเช่นนี้เพื่อให้ผู้คนสามารถท่องไปและกลับจากบางสิ่งได้

4
ส่วนต่อประสานที่คล่องแคล่วมีความยืดหยุ่นมากกว่าคุณสมบัติและทำไม?
ในการสอนโค้ด EF 4.1 รหัสแรกจะได้รับรหัสต่อไปนี้: public class Department { public int DepartmentId { get; set; } [Required] public string Name { get; set; } public virtual ICollection<Collaborator> Collaborators { get; set; } } จากนั้นจะอธิบายว่าอินเทอร์เฟซที่คล่องแคล่วมีความยืดหยุ่นมากขึ้น: คำอธิบายประกอบข้อมูลนั้นใช้งานง่ายอย่างแน่นอน แต่ควรใช้วิธีการเขียนโปรแกรมที่ให้ความยืดหยุ่นมากกว่า ตัวอย่างของการใช้ส่วนต่อประสานที่คล่องแคล่วจะได้รับ: protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Department>().Property(dp => dp.Name).IsRequired(); modelBuilder.Entity<Manager>().HasKey(ma => ma.ManagerCode); modelBuilder.Entity<Manager>().Property(ma => …
15 c#  coding-style 

6
C # อ่านยากขึ้นไหม
เมื่อ C # ได้รับการพัฒนาคุณสมบัติด้านภาษาจำนวนมากได้ถูกเพิ่ม มันมาถึงจุดที่มันกลายเป็นอ่านไม่ได้สำหรับฉัน ยกตัวอย่างเช่นพิจารณารหัสต่อไปนี้จากรหัส Caliburn.Micro ที่นี่ : container = CompositionHost.Initialize( new AggregateCatalog( AssemblySource.Instance. Select(x => new AssemblyCatalog(x)) .OfType<ComposablePartCatalog>() ) ); ตอนนี้เป็นเพียงตัวอย่างเล็ก ๆ ฉันมีคำถามจำนวนหนึ่ง: นี่เป็นปัญหาทั่วไปหรือเป็นที่รู้จักหรือไม่? ชุมชน C # ค้นหาเหมือนกันหรือไม่ นี่เป็นปัญหาเกี่ยวกับภาษาหรือเป็นสไตล์ที่นักพัฒนาใช้หรือไม่ มีวิธีง่ายๆในการเข้าใจโค้ดอื่น ๆ และหลีกเลี่ยงการเขียนโค้ดด้วยวิธีนี้หรือไม่?
15 c#  readability 

5
วิธีการที่มีประสิทธิภาพสำหรับการจัดเก็บวัตถุนับสิบล้านเพื่อการสืบค้นด้วยการแทรกจำนวนมากต่อวินาที?
นี่เป็นแอปพลิเคชั่นบันทึก / นับที่นับจำนวนแพ็กเก็ตและการนับประเภทของแพ็คเก็ต ฯลฯ ในเครือข่ายการแชท p2p ซึ่งเท่ากับประมาณ 4-6 ล้านแพ็กเก็ตในระยะเวลา 5 นาที และเนื่องจากฉันใช้เพียงแค่ "ภาพรวม" ของข้อมูลนี้ฉันจึงลบแพ็กเก็ตที่เก่ากว่า 5 นาทีทุกห้านาที ดังนั้นจำนวนสูงสุดของไอเท็มที่จะอยู่ในคอลเล็กชันนี้คือ 10 ถึง 12 ล้าน เนื่องจากฉันต้องทำการเชื่อมต่อ 300 กับ superpeers ที่แตกต่างกันจึงเป็นไปได้ที่แต่ละแพ็กเก็ตจะพยายามแทรกอย่างน้อย 300 ครั้ง (ซึ่งอาจเป็นเหตุผลว่าทำไมการเก็บข้อมูลนี้ไว้ในหน่วยความจำจึงเป็นตัวเลือกที่สมเหตุสมผลเท่านั้น) ปัจจุบันฉันใช้พจนานุกรมเพื่อจัดเก็บข้อมูลนี้ แต่เนื่องจากรายการจำนวนมากที่ฉันพยายามจัดเก็บฉันจึงพบปัญหากับกองวัตถุขนาดใหญ่และปริมาณการใช้หน่วยความจำเติบโตอย่างต่อเนื่องตลอดเวลา Dictionary<ulong, Packet> public class Packet { public ushort RequesterPort; public bool IsSearch; public string SearchText; public bool Flagged; public …

1
วิธีที่เหมาะสมในการแนะนำคุณสมบัติที่จะเพิ่มในภาษา C # คืออะไร?
วิธีที่เหมาะสมในการแนะนำคุณสมบัติที่จะเพิ่มในภาษา C # คืออะไร? ตัวอย่างเช่นฉันต้องการให้โอเปอเรเตอร์คล้ายกับ??แต่สำหรับการเลือกค่า min หรือ max ฉันต้องการที่a <? bจะขยายไปในa < b ? a : b ทำนองเดียวกันสำหรับ>?
15 c# 

3
หลักเกณฑ์เนมสเปซและชื่อคลาส
ฉันมีปัญหาในการตั้งชื่อชั้นเรียนและบริการของฉันอย่างถูกต้องเมื่อมีส่วนร่วมและชั้นเรียนช่วยเหลืออื่น ๆ เข้ามาเกี่ยวข้อง คุณจะจัดโครงสร้างต่อไปนี้อย่างไร: EventService.cs EventServiceUtils.cs EventServiceValidators.cs EventServiceCoordinator.cs ฯลฯ ... ฉันมีหลายบริการที่มีความต้องการเช่นเดียวกับบริการข้างต้น ความคิดหนึ่งคือการแยกสิ่งเหล่านี้ทั้งหมดออกเป็นเนมสเปซที่เหมาะสมทำให้มันเป็นดังนี้: Services.EventService.EventService.cs //(the actual service) Services.EventService.Validators.DateValidator.cs Services.EventService.Validators.ParticipantValidator.cs Services.EventService.Coordinators.ParticipantCoordinator.cs Services.EventService.ExtensionMethods.Extensions.cs และอื่น ๆ แน่นอนว่าเนมสเปซทุกรายการจะมีโฟลเดอร์แยกต่างหาก แต่นี่ไม่ได้รู้สึก 100% เนื่องจากมีDateValidatorsบริการอื่น ๆ อีกมากมายซึ่งอาจนำไปสู่การอ้างอิงที่ไม่พึงประสงค์ได้อย่างง่ายดาย และยังServices.EventService.EventService.csรวมถึงชื่อคลาสในเนมสเปซซึ่งไม่ดีเช่นกัน คุณสามารถใช้Services.Event.EventService.csแต่มีหลักสูตรที่มีชื่อนั้นอยู่แล้ว นี่คือรูปแบบโดเมน
15 c#  architecture 

6
วิธีการจ้างนักพัฒนา C # ที่ดีถ้าฉันไม่รู้ C # [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ฉันเป็นนักพัฒนา C ++ ฉันรู้ว่า Windows ทำงานในระดับปกติได้อย่างไร แต่ฉันไม่ใช่ผู้เชี่ยวชาญตัวใหญ่ใน C # และ. NET ตอนนี้ฉันต้องการนักพัฒนา C # ในทีมของฉัน (นักพัฒนาของฉันคือ C ++) ฉันจะจ้างนักพัฒนา C # ที่ดีได้อย่างไรหากฉันไม่รู้จัก C # ในระดับดี วิธีการถามคำถามวิธีการทดสอบว่าคำตอบดีหรือผิดพลาด?
15 c#  c++  hiring 

1
มีตัวอย่างของการนำไปปฏิบัติและตอบสนองต่อ“ Chaos Monkey” อย่างมีประสิทธิภาพหรือไม่?
Jeff Atwood เพิ่งเขียนโพสต์บล็อกเกี่ยวกับการใช้ Netflix ของ "Chaos Monkey" มันเป็นบทความระดับสูงมาก ฉันอยากรู้ว่าถ้าใครใช้เทคนิคนี้เพื่อทดสอบระบบ ฉันเดาว่าฉันพยายามถามอะไรจริงๆ: คุณใช้กลยุทธ์อะไรเพื่อให้มั่นใจว่าสถาปัตยกรรมของคุณสามารถอยู่รอดได้ในส่วนของระบบที่ล้มเหลว

7
การเขียนโปรแกรมเกม: C # หรือ C ++? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันตัดสินใจว่าสิ่งที่ฉันต้องการจริงๆคือทำโปรแกรมเกม ดังนั้นคำถามคือเมื่ออายุ 18 ปีที่ต้องการเรียนรู้การเขียนโปรแกรมด้วยตัวเองภาษาการเขียนโปรแกรมที่เหมาะสมที่สุดระหว่าง C # และ C ++ คืออะไร (ฉันควรระบุว่าฉันไม่สนใจ Unix เพราะฉันเชื่อว่า windows จะยังคงเป็น OS ที่ใช้มากที่สุด) ฉันรู้พื้นฐานของ C ++ แต่ไม่มีเกี่ยวกับ C # ฉันรู้ว่า C ++ มีคู่มือการสอนเพิ่มเติม, ที่กำลังและสิ่งต่างๆเช่นนั้น, ในขณะที่ C # ไม่ได้, แต่มันง่ายกว่าที่จะเรียนรู้และใช้สำหรับคนคนเดียวในการพัฒนาโปรแกรม, แต่ฉันอ่านแม้ว่าโปรแกรมนั้นจะงงงวย มันง่ายที่จะได้รับแหล่งที่มาของมัน ฉันต้องการที่จะเน้นเรื่องพื้นฐานเป็นอย่างมากก่อนอื่นฉันต้องบอกว่าฉันชอบ C ++ …

4
มันเป็น "ผิด" / การออกแบบที่ไม่ดีที่จะนำคนงานกระทู้ / พื้นหลังในชั้นเรียนหรือไม่?
ฉันมีชั้นเรียนที่จะอ่านจาก Excel (C # และ. Net 4) และในชั้นเรียนนั้นฉันมีผู้ทำงานเบื้องหลังที่จะโหลดข้อมูลจาก Excel ในขณะที่ UI สามารถตอบสนองได้ คำถามของฉันมีดังต่อไปนี้: การออกแบบที่ไม่ดีที่จะมีคนทำงานเบื้องหลังในชั้นเรียนหรือไม่? ฉันควรสร้างชั้นเรียนโดยไม่มีมันและใช้ผู้ทำงานเบื้องหลังเพื่อทำงานในชั้นเรียนนั้นหรือไม่? ฉันไม่เห็นปัญหาใด ๆ ในการสร้างชั้นเรียนของฉันด้วยวิธีนี้ แต่จากนั้นอีกครั้งฉันเป็นมือใหม่ดังนั้นฉันจึงคิดว่าฉันจะทำให้แน่ใจก่อนที่ฉันจะดำเนินการต่อ ฉันหวังว่าคำถามนี้เกี่ยวข้องกับที่นี่เพราะฉันไม่คิดว่ามันควรจะเป็นแบบ stackoverflow เนื่องจากรหัสของฉันทำงานได้นี่เป็นเพียงปัญหาการออกแบบ

13
async & คอย - สำรวจทางเลือก [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ตอนนี้เรารู้ว่าสิ่งที่อยู่ในร้านสำหรับ C # 5 มีเห็นได้ชัดว่ายังคงเปิดสำหรับเราที่จะมีอิทธิพลต่อทางเลือกของสองคำใหม่สำหรับสasynchrony 'ที่ได้รับการประกาศโดย Anders Heijsberg เมื่อวานนี้ที่PDC10 async void ArchiveDocuments(List<Url> urls) { Task archive = null; for(int i = 0; i < urls.Count; ++i) { var document = await FetchAsync(urls[i]); if (archive != null) await archive; archive = ArchiveAsync(document); } …
15 c#  naming 

4
การเชื่อมต่อฐานข้อมูลจะถูกปิดหรือไม่ถ้าเราให้ผลแถวของ data datader และไม่อ่านบันทึกทั้งหมด?
ในขณะที่ทำความเข้าใจวิธีการyieldทำงานของคำหลักฉันเจอlink1และlink2บน StackOverflow ซึ่งสนับสนุนการใช้งานyield returnในขณะวนซ้ำ DataReader และเหมาะสมกับความต้องการของฉันเช่นกัน แต่มันทำให้ฉันสงสัยว่าเกิดอะไรขึ้นถ้าฉันใช้yield returnดังที่แสดงด้านล่างและถ้าฉันไม่ทำซ้ำใน DataReader ทั้งหมดการเชื่อมต่อฐานข้อมูลจะเปิดตลอดไปหรือไม่ IEnumerable<IDataRecord> GetRecords() { SqlConnection myConnection = new SqlConnection(@"..."); SqlCommand myCommand = new SqlCommand(@"...", myConnection); myCommand.CommandType = System.Data.CommandType.Text; myConnection.Open(); myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection); try { while (myReader.Read()) { yield return myReader; } } finally { myReader.Close(); } } void AnotherMethod() { foreach(var …
15 c#  database  .net  resources 

1
การทดสอบหน่วยสำหรับไลบรารีการคำนวณทางวิทยาศาสตร์
ฉันเคยมีประสบการณ์เล็กน้อยเกี่ยวกับการทดสอบหน่วยมาก่อนในสิ่งที่ฉันเรียกว่า (ไม่ใช่ดูถูก) โครงการวิศวกรรมซอฟต์แวร์แบบคลาสสิก: MVC ที่มี GUI ผู้ใช้ฐานข้อมูลตรรกะทางธุรกิจในชั้นกลางเป็นต้นตอนนี้ฉันก็เลย m กำลังเขียนไลบรารี่การคำนวณทางวิทยาศาสตร์ใน C # (ใช่ฉันรู้ว่า C # ช้าเกินไปใช้ C ไม่ต้องพลิกโฉมวงล้อและทั้งหมดนั้น แต่เรามีคนจำนวนมากที่ทำการคำนวณทางวิทยาศาสตร์ในคณะของฉันใน C # และเราต้องการมัน) มันเป็นโครงการขนาดเล็กในแง่ของอุตสาหกรรมการพัฒนาซอฟต์แวร์เพราะฉันเขียนด้วยตัวเองเป็นส่วนใหญ่และเป็นครั้งคราวด้วยความช่วยเหลือจากเพื่อนร่วมงานไม่กี่คน นอกจากนี้ฉันไม่ได้รับเงินและที่สำคัญที่สุดคือโครงการทางวิชาการ ฉันหมายถึงฉันคาดหวังว่ามันจะมีคุณภาพระดับมืออาชีพสักวันเพราะฉันวางแผนที่จะเปิดแหล่งที่มา อย่างไรก็ตามโครงการกำลังใหญ่ขึ้น (มีรหัสประมาณ 18,000 บรรทัดซึ่งฉันคิดว่าใหญ่สำหรับโครงการของชายคนหนึ่ง) และมันก็หลุดออกจากมือฉันแล้ว ฉันใช้ git เพื่อควบคุมแหล่งข้อมูลและฉันคิดว่าฉันทำได้ดี แต่ฉันกำลังทดสอบเหมือนโรงเรียนเก่าฉันหมายถึงการเขียนแอปพลิเคชั่นคอนโซลแบบเต็มรูปแบบที่ทดสอบส่วนใหญ่ของระบบส่วนใหญ่เป็นเพราะฉันไม่รู้ ทำการทดสอบหน่วยในสถานการณ์นี้แม้ว่าฉันรู้สึกว่าเป็นสิ่งที่ฉันควรทำ ปัญหาคือห้องสมุดมีอัลกอริธึมเป็นส่วนใหญ่เช่นอัลกอริธึมกราฟตัวแยกประเภทตัวแก้ตัวเลขการแจกแจงแบบสุ่ม ฯลฯ ฉันไม่ทราบวิธีระบุกรณีทดสอบเล็ก ๆ สำหรับอัลกอริธึมเหล่านี้ สุ่มฉันไม่รู้วิธีตรวจสอบความถูกต้อง ตัวอย่างเช่นสำหรับการจำแนกประเภทมีตัวชี้วัดบางอย่างเช่นความแม่นยำและการเรียกคืน แต่ตัวชี้วัดเหล่านี้ดีกว่าสำหรับการเปรียบเทียบอัลกอริธึมสองกว่าการตัดสินอัลกอริธึมเดียว ดังนั้นฉันจะกำหนดความถูกต้องได้อย่างไรที่นี่ ในที่สุดก็มีปัญหาประสิทธิภาพการทำงาน ฉันรู้ว่ามันเป็นชุดทดสอบที่แตกต่างกันโดยสิ้นเชิง แต่ประสิทธิภาพเป็นหนึ่งในคุณสมบัติที่สำคัญของเครื่องมือทางวิทยาศาสตร์มากกว่าความพึงพอใจของผู้ใช้หรือการวัดทางวิศวกรรมซอฟต์แวร์อื่น ๆ หนึ่งในปัญหาที่ใหญ่ที่สุดของฉันคือโครงสร้างข้อมูล การทดสอบเดียวที่ฉันสามารถทำได้สำหรับต้นไม้ kd …
15 c#  unit-testing 

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