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

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

4
วิธีนี้บริสุทธิ์หรือไม่
ฉันมีวิธีการต่อไปนี้: public static IEnumerable<T> Apply<T>( [NotNull] this IEnumerable<T> source, [NotNull] Action<T> action) where T : class { source.CheckArgumentNull("source"); action.CheckArgumentNull("action"); return source.ApplyIterator(action); } private static IEnumerable<T> ApplyIterator<T>(this IEnumerable<T> source, Action<T> action) where T : class { foreach (var item in source) { action(item); yield return item; } } มันใช้การกระทำกับแต่ละรายการในลำดับก่อนที่จะส่งคืน ฉันสงสัยว่าฉันควรใช้แอPureททริบิวต์ (จากคำอธิบายประกอบ …

1
การออกแบบอินเตอร์เฟสและ async
สมมติว่าฉันได้สร้างส่วนต่อประสานที่IFolderRepositoryมีวิธีการดังนี้: IEnumerable<Folder> GetAllFolders(); Folder GetFolderWithId(int id); void AddFolder(Folder newFolder); void ModifyFolder(Folder folderToModify, Folder folderAfterModification); void RemoveFolder(Folder folderToRemove); และฉันได้ดำเนินการและช่วยให้พูดDatabaseFolderRepository CacheFolderRepositoryDecoratorตอนนี้หลายร้อยสายต่อมา 'ผมอยากจะเพิ่ม SkyDrive โฟลเดอร์ functionallity SkyDriveFolderRepositoryดังนั้นฉันพร้อมที่จะเพิ่ม แต่น่าเสียดายที่ในขณะที่DatabaseFolderRepositoryการดำเนินการใช้วิธีการซิงโครที่จะพูดคุยกับฐานข้อมูล, SkyDrive หนึ่งใช้จำนวนมากและasync awaitจะทำอย่างไรในกรณีเช่นนี้? ในกรณีที่วิธีการทำเครื่องหมายเป็นโมฆะทำเครื่องหมายว่า async ไม่ใช่วิธีการแก้ปัญหา (จำเป็นต้องยกเว้นการจัดการ) ฉันควรเปลี่ยนอินเทอร์เฟซเพื่อส่งคืนTask<T>หรือไม่ แน่ใจว่ามันจะทำงานในตัวอย่างข้างต้น แต่พวกเขาเป็นเพียง 2 ชั้นเรียนการใช้งานอินเตอร์เฟซ หรืออินเทอร์เฟซส่วนใหญ่ของฉันควรมีTaskประเภทการส่งคืน (คุณไม่ต้องการกฎ)
9 c#  async 

3
วิธีที่ดีที่สุดในการเชื่อมโยงบริบทฐานข้อมูล Entity Framework (รุ่น) กับ ViewModel ใน MVVM WPF คืออะไร
ดังในคำถามข้างต้น: อะไรคือวิธีที่ดีที่สุดในการเชื่อมโยงโมเดลฐานข้อมูล Entity Framework (บริบท) กับ viewModel ใน MVVM (WPF) ฉันกำลังเรียนรู้รูปแบบ MVVM ใน WPF ตัวอย่างจำนวนมากแสดงวิธีการนำโมเดลไปใช้กับ viewModel แต่โมเดลในตัวอย่างนั้นเป็นคลาสที่เรียบง่ายฉันต้องการใช้ MVVM พร้อมกับโมเดลเฟรมเวิร์กเอนทิตี (base first approach) Whats วิธีที่ดีที่สุดในการวางสายเพื่อดู model ขอบคุณสำหรับคำตอบ //ctor of ViewModel public ViewModel() { db = new PackageShipmentDBEntities(); // Entity Framework generated class ListaZBazy = new ObservableCollection<Pack>(db.Packs.Where(w => w.IsSent == false)); } …

1
การตั้งชื่อคลาสและอินเตอร์เฟสที่เกี่ยวข้อง
ฉันได้สร้างObjectParserคลาสที่แยกวิเคราะห์ข้อมูลเป็นวัตถุที่พิมพ์อย่างยิ่งโดยใช้IObjectParserDataSourceเป็นแหล่งข้อมูล (ข้อมูลอาจเป็นไฟล์ Excel, ไฟล์ข้อความ, อาเรย์, สตริงการสืบค้น ฯลฯ ) ตัวอย่างของการใช้งานของฉันIObjectParserDataSourceคือ: TextFileObjectParserDataSource ExcelFileObjectParserDataSource ชื่อชั้นเหล่านี้ให้ความรู้สึกยาวและโน้มน้าวใจฉัน ฉันชื่อพวกเขาได้: TextFileDataSource ExcelFileDataSource แต่สิ่งนี้นำเสนอระดับความคลุมเครือและพวกเขาก็ไม่ได้เกี่ยวข้องอย่างชัดเจนกับการIObjectParserDataSourceมองแวบแรก สิ่งนี้กลายเป็นสิ่งสำคัญเนื่องจากการกำหนดแหล่งข้อมูลเหล่านี้จะเกิดขึ้นในรหัสลูกค้าและฉันต้องการลดความสับสนและความไม่แน่นอนที่อาจเกิดขึ้น คุณจะตั้งชื่อคลาสเหล่านี้ในสถานการณ์จำลองได้อย่างไร?

2
วิธีการห่อหุ้มตัวแปร 'ทั่วโลก' ใน C #? /ปฏิบัติที่ดีที่สุด
ต้องการปรับปรุงโพสต์นี้หรือไม่? ให้คำตอบโดยละเอียดสำหรับคำถามนี้รวมถึงการอ้างอิงและคำอธิบายว่าทำไมคำตอบของคุณถึงถูกต้อง คำตอบที่ไม่มีรายละเอียดเพียงพออาจแก้ไขหรือลบออกได้ ใน C # วิธีที่ดีที่สุดสำหรับการห่อหุ้มตัวแปรที่ฉันต้องการใช้ในหลายวิธีคืออะไร? ตกลงไหมที่จะประกาศพวกเขาที่ชั้นบนสุดของชั้นเรียนของฉันเหนือสองวิธี? นอกจากนี้หากฉันใช้การตั้งค่าแอพจากไฟล์ปรับแต่งฉันควรใช้ getter หรือไม่? แบบนี้... private string mySetting{ get { return WebConfigurationManager.AppSettings["mySetting"]; } } การปฏิบัติที่ดีที่สุดคืออะไร?

3
การสร้างฐานข้อมูลการแปลสตริงสำหรับโครงการ (ในบ้าน) หลายโครงการ
ที่ บริษัท ของเราเรามีการแปล ms-sql table ที่เก็บสตริงเช่นนี้: Id | Key | Language | Value 1 | hello-world | nl-BE | Hallo Wereld 2 | hello-world | en-GB | Hello World มี 3 ภาษาในระบบและฉันคาดหวังว่าสิ่งนี้จะเติบโตสูงสุดประมาณ 10 ในอนาคต ตารางนี้ถูกอ่านโดยหลายโครงการที่แตกต่างกันมาก (ประมาณ 60 โครงการส่วนใหญ่เป็นเว็บไซต์ / เว็บแอปพลิเคชันและบริการบนเว็บบางอย่าง) ที่แต่ละเปิดการเชื่อมต่อฐานข้อมูลไปยังฐานข้อมูลการแปลแคชแปล ข้อเสนอแนะจาก front-end devs คือ UI ของเราที่จะใส่หรือแก้ไขข้อเสียที่ใหญ่ที่สุดของการแปลคือพวกเขาไม่สามารถรู้ว่าโครงการใดใช้สตริงอะไร บางครั้งพวกเขาปรับเปลี่ยนสตริงที่ไม่ทราบว่าพวกเขากำลังทำลาย 7 โครงการด้วย …
9 c#  resources 

3
'ใช้' เหมาะสมหรือไม่ในบริบทที่ไม่มีอะไรทิ้ง?
ใน C # usingคำสั่งจะถูกใช้เพื่อกำจัดทรัพยากรอย่างไม่ถูกต้องโดยไม่ต้องรอการเก็บขยะ ตัวอย่างเช่นอาจใช้เพื่อ: กำจัดคำสั่งหรือการเชื่อมต่อ SQL ปิดสตรีมปล่อยแหล่งข้อมูลอ้างอิงเช่นไฟล์ องค์ประกอบ GDI + ฟรี เป็นต้น ฉันสังเกตเห็นว่าusingมีการใช้งานมากขึ้นในกรณีที่ไม่มีสิ่งใดที่จะกำจัด แต่ที่มันสะดวกกว่าสำหรับผู้โทรที่จะเขียนusingบล็อกแทนที่จะเป็นสองคำสั่งแยกกัน ตัวอย่าง: MiniProfilerเขียนโดยทีม Stack Overflow ใช้usingเพื่อแสดงถึงบล็อกในโปรไฟล์: using (profiler.Step("Name goes here")) { this.DoSomethingUseful(i - 1); } ทางเลือกหนึ่งที่จะมีสองช่วงตึก: var p = profiler.Start("Name goes here"); this.DoSomethingUseful(i - 1); profiler.Stop(p); อีกวิธีหนึ่งคือการใช้การกระทำ: profiler.Step("Name goes here", () => this.DoSomethingUseful(i - 1)); ASP.NET …

4
ค่าคงที่ใน C #
ทำไมคอมไพเลอร์เก็บค่าคงที่ในข้อมูลเมตาแอสเซมบลี? พวกเขาฝังตัวโดยตรงกับรหัสภาษาระดับกลางจากข้อมูลเมตาแอสเซมบลีหรือไม่
9 c#  clr  compilation 

8
ที่ผ่านมาถ้างบอาร์เรย์ลูป ... ตอนนี้อะไร
ฉันเลิกเขียนโปรแกรมเมื่อประมาณหนึ่งปีที่แล้วตอนที่ฉันกดปุ่มกำแพงนี้ต่อไป ฉันกำลังทบทวนหัวข้อนี้เพราะฉันต้องการสร้างแอปพลิเคชัน Android ขั้นพื้นฐาน แต่ฉันรู้สึกว่าความรู้ที่ จำกัด ของฉันจะไม่เพียงพอ นี่คือปัญหาของฉัน ฉันได้อ่านหนังสือสองสามเล่มและดูวิดีโอการสอนบน C # / Java แล้วทำตามตัวอย่างจากนั้นก็อ่านหนังสือจนจบ ในท้ายที่สุดพวกเขาดูเหมือนจะทิ้งฉันไปตะลึงกับสิ่งที่ต้องทำต่อไป หมายความว่าอย่างไรพวกเขาสอนคุณจากแอปพลิเคชัน "สวัสดีโลก" พื้นฐานของคุณไปจนถึงถ้าและอาร์เรย์นั้นดูเหมือนว่าคุณคาดหวังว่าคุณจะรู้วิธีที่จะออกไปสู่โลกแห่งการเข้ารหัสและสร้างอะไร ฉันทำอะไรบางอย่างหายไปหรือเปล่า ฉันรู้ว่าสิ่งเหล่านี้เป็นองค์ประกอบสำคัญของโปรแกรมทั้งหมด แต่หนังสือที่ฉันอ่านไม่เคยแสดงให้ฉันเห็นว่าต้องทำอะไรต่อไป คำตอบง่ายๆที่ฉันคิดว่าน่าจะเป็น 'เริ่มการเข้ารหัส' แต่ที่ไหน ฉันอ่าน "Head First Java" เป็นตัวอย่าง พวกเขาบอกว่าคุณทำทุกอย่างที่เรียนรู้และสร้างเกมแข่งสุนัข "พยายามที่จะไม่โกงและดูซอร์สโค้ดที่ให้ไว้คุณควรจะทำสิ่งนี้ได้ในตอนนี้" _ นั่นไม่ใช่คำพูดที่แน่นอน แต่โดยทั่วไปนั่นคือสิ่งที่ฉันบอก ....... ครึ่งชั่วโมงที่ผ่านมาพวกเขาแค่อธิบายถึงวิธีการทำอาร์เรย์แล้วถ้าไม่มีทฤษฎีใดที่ฉันตั้งใจจะสร้างเกมที่ใช้งานได้ เหตุผลที่ฉันถามสิ่งนี้เพราะฉันกลัวว่านี่คือทั้งหมดที่ฉันควรรู้อย่างน้อยก็เริ่มเขียนโค้ด แต่มันรู้สึกเหมือนฉันได้รับกล่องเครื่องมือขนาดเล็กและถูกสั่งให้สร้างตึกระฟ้า ขอบคุณสำหรับคำแนะนำใด ๆ

5
ข้อยกเว้น“ ข้อผิดพลาดในการเขียนโปรแกรม” - แนวทางของฉันมีเสียงดีหรือไม่?
ขณะนี้ฉันพยายามปรับปรุงการใช้งานข้อยกเว้นและพบความแตกต่างที่สำคัญระหว่างข้อยกเว้นที่บ่งบอกถึงข้อผิดพลาดในการเขียนโปรแกรม (เช่นบางคนผ่านการพิสูจน์ว่าเป็นโมฆะหรือเรียกวิธีการบนวัตถุหลังจากถูกกำจัด) และสิ่งที่แสดงถึงความล้มเหลวใน การดำเนินการที่ไม่ใช่ความผิดของผู้โทร (เช่นข้อยกเว้น I / O) ข้อยกเว้นสองชนิดนี้ควรได้รับการปฏิบัติแตกต่างกันอย่างไร คุณคิดว่าต้องมีการบันทึกข้อผิดพลาดอย่างชัดเจนหรือไม่เพียงพอที่จะบันทึกปัจจัยที่เกี่ยวข้องหรือไม่ และคุณสามารถทิ้งเอกสารของเงื่อนไขเบื้องต้นหรือข้อผิดพลาดถ้ามันควรจะชัดเจน (ตัวอย่างเช่นObjectDisposedExceptionเมื่อเรียกวิธีการในวัตถุที่จำหน่าย)
9 java  c#  c++  exceptions 

5
คลาสที่ซ้อนกันต่ำกว่าระดับหรือไม่
ฉันไม่ได้พยายามที่จะบอกว่าฉันรู้ว่าสิ่งที่คนอื่นไม่ได้ทำ แต่ฉันได้แก้ไขการออกแบบมากขึ้นด้วยการใช้คลาสที่ซ้อนกันดังนั้นฉันอยากรู้อยากเห็นความรู้สึกของการยอมรับการใช้สิ่งนี้ดูเหมือนไม่ค่อยได้ใช้ กลไกการออกแบบ สิ่งนี้ทำให้ฉันมีคำถาม: ฉันจะลงเส้นทางที่ไม่ดีโดยเนื้อแท้ด้วยเหตุผลที่ฉันจะค้นพบเมื่อพวกเขากลับมากัดฉันหรือเรียนซ้อนกันอาจเป็นสิ่งที่ underrated? นี่คือตัวอย่างสองตัวอย่างที่ฉันเพิ่งใช้เพื่อ: https://gist.github.com/3975581 - สิ่งแรกที่ช่วยให้ฉันเก็บรักษาสิ่งที่สืบทอดมาได้อย่างแน่นหนาด้วยกันครั้งที่สองให้ฉันเข้าถึงสมาชิกที่ได้รับความคุ้มครองจากพนักงาน ...
9 c#  design 

1
สิ่งที่ควรทำกับชื่อคลาสที่ขัดแย้งกัน (ชื่อสามัญ) ชื่อกรอบงาน
สิ่งที่ควรทำอย่างแน่นอนเมื่อชื่อคลาสที่ชัดเจนที่สุดสำหรับส่วนประกอบถูกนำมาใช้โดยกรอบ? ในกรณีของฉันฉันต้องสร้างคลาสที่อธิบายการร้องขอ HTTP แน่นอนชื่อที่พบบ่อยที่สุดคือ "ถ่าย" เป็น System.Web.HttpRequest ฉันควรทำอย่างไรดี? โปรเจ็กต์นี้จะใช้ในบริบทเว็บดังนั้นฉันจึงไม่อยากบังคับให้คนไม่นำเข้าเนมสเปซ System.Web หรือพิมพ์ชื่อคลาสทั้งหมดของฉันด้วยตนเอง อะไรคือวิธีจัดการกับสิ่งนี้ตามปกติ? ฉันสามารถมากับสิ่งนี้: ชื่อคลาสคำนำหน้าด้วยชื่อย่อโครงการ ลองคิดชื่ออื่นที่มีความหมายเหมือนกัน (ฉันลองแล้วไม่สามารถคิดอะไรใหม่ ๆ ได้) บังคับให้ผู้ใช้เลือกระหว่างเนมสเปซ
9 c#  .net  naming  namespace 

4
วิธีที่ดีที่สุดในการจัดการการอ้างอิงในแอปพลิเคชัน. NET คืออะไร
เมื่อเร็ว ๆ นี้ที่ทำงานเราพบปัญหาที่เราติดแท็ก / แยกโครงการและมีปัญหาในการรวบรวมเนื่องจากการอ้างอิง dll / project ที่ชี้ไปยังโครงสร้างโฟลเดอร์เก่า เราสร้างโฟลเดอร์ 'ถังขยะภายนอก' สำหรับแต่ละโครงการและคัดลอก dll ที่อ้างอิงไปยังโฟลเดอร์เหล่านี้ นี่เป็นวิธีที่ดีที่สุดหรือมีมาตรฐานอุตสาหกรรมเฉพาะเพื่อจัดการเรื่องนี้หรือไม่?
9 c# 

4
ภาษาใหม่จะมีลักษณะอย่างไรถ้ามันถูกออกแบบมาตั้งแต่เริ่มต้นจนถึง TDD ง่าย?
ด้วยบางภาษาที่พบบ่อยที่สุด (Java, C #, Java, ฯลฯ ) บางครั้งดูเหมือนว่าคุณกำลังทำงานกับภาษาเมื่อคุณต้องการ TDD รหัสของคุณอย่างเต็มที่ ตัวอย่างเช่นใน Java และ C # คุณจะต้องการเยาะเย้ยการพึ่งพาใด ๆ ของชั้นเรียนของคุณและกรอบการเยาะเย้ยส่วนใหญ่จะแนะนำให้คุณจำลองการเชื่อมต่อไม่ได้เรียน บ่อยครั้งซึ่งหมายความว่าคุณมีอินเทอร์เฟซมากมายกับการใช้งานเพียงครั้งเดียว (เอฟเฟกต์นี้จะสังเกตได้ชัดเจนยิ่งขึ้นเพราะ TDD จะบังคับให้คุณเขียนคลาสที่มีขนาดเล็กกว่า) โซลูชันที่ให้คุณจำลองคลาสคอนกรีตอย่างถูกต้องทำสิ่งต่าง ๆ เช่นดัดแปลงคอมไพเลอร์หรือแทนที่ตัวโหลดคลาส ฯลฯ ซึ่งน่ารังเกียจ แล้วภาษาจะเป็นอย่างไรถ้ามันถูกออกแบบมาตั้งแต่เริ่มต้นจนถึงเป็น TDD ที่ยอดเยี่ยม? อาจเป็นไปได้ที่ภาษาระดับวิธีการอธิบายการพึ่งพา (แทนที่จะผ่านอินเตอร์เฟซไปยังตัวสร้าง) และความสามารถในการแยกอินเทอร์เฟซของชั้นเรียนโดยไม่ทำอย่างชัดเจน?

4
ส่งคืนอินเตอร์เฟสหรือคลาส
สมมติว่าฉันมีวิธี public List<User> GetBatchOfUsers(IEnumerable<int> userIDs) { List<User> users = new List<User>(); // some database stuff return users; } ฉันได้อ่านว่ามันจะดีกว่าที่จะกลับมาอินเตอร์เฟซ (อย่างใดอย่างหนึ่งIListหรือIEnumerable) Listเมื่อเทียบกับกลับ ข้อโต้แย้งบางประการที่ฉันเคยได้ยินเกี่ยวกับการทำเช่นนั้นคือมันซ่อนข้อมูลและให้ความยืดหยุ่นแก่นักพัฒนา API ในการเปลี่ยนการแสดงข้อมูลภายในในภายหลัง ความกังวลของฉันเกี่ยวกับการส่งคืนIEnumerableคือคุณสูญเสียฟังก์ชันการทำงานเช่นการเข้าถึงแบบสุ่มและCountคุณสมบัติ ฉันรู้ว่าการยอมรับIEnumerableพารามิเตอร์เป็นสิ่งที่สมเหตุสมผลเนื่องจากทำให้ผู้บริโภคมีความยืดหยุ่นที่ดีที่สุดในการส่งข้อมูลไปยังวิธีการของฉันซึ่งเป็นข้อกำหนดที่เรียบง่ายสำหรับวิธีการใช้งาน แนวปฏิบัติที่ดีที่สุดสำหรับประเภทส่งคืนคืออะไร
9 c#  interfaces  class 

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