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

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

16
ac # dev ควรเปลี่ยนเป็น VB.net เมื่อฐานภาษาของทีมผสมกันหรือไม่
ฉันเพิ่งเข้าร่วมทีมพัฒนาใหม่ที่มีการตั้งค่าภาษาผสมกันบนแพลตฟอร์ม. net Dev 1: รู้ว่า VB.net ไม่รู้ว่า c # Dev 2: รู้ว่า VB.net ไม่รู้ว่า c # Dev 3: รู้ c # และ VB.net ต้องการ c # Dev 4: รู้ c # และ VB6 (VB.net น่าจะง่ายต่อการรับ), ชอบ c # สำหรับฉันแล้วดูเหมือนว่าผู้นำทางความคิดใน. net จะเป็น c # devs เกือบทุกระดับ ฉันคิดด้วยว่าเครื่องมือของบุคคลที่สามบางตัวไม่รองรับ VB.net แต่เมื่อฉันเริ่มมองหามันฉันไม่พบตัวอย่างที่ดีเลย ฉันต้องการรับทั้งทีมใน c …
14 c#  .net  vb.net 

1
ทำไมทุกคนจะใช้ข้อมูลหลายส่วน / แบบฟอร์มสำหรับข้อมูลที่หลากหลายและการถ่ายโอนไฟล์?
ฉันทำงานใน C # และสื่อสารระหว่าง 2 แอพที่ฉันกำลังเขียน ฉันชอบ Web API และ JSON ตอนนี้ฉันมาถึงจุดที่ฉันกำลังเขียนกิจวัตรประจำวันเพื่อส่งบันทึกระหว่างเซิร์ฟเวอร์ทั้งสองที่มีข้อมูลตัวอักษรและไฟล์อยู่บ้าง ตามอินเทอร์เน็ตฉันควรใช้คำขอ multipart / form-data ตามที่แสดงที่นี่: ดังนั้นคำถาม "Multipart form จาก C # client" โดยทั่วไปคุณเขียนคำขอด้วยตนเองที่ตามรูปแบบดังนี้: Content-type: multipart/form-data, boundary=AaB03x --AaB03x content-disposition: form-data; name="field1" Joe Blow --AaB03x content-disposition: form-data; name="pics"; filename="file1.txt" Content-Type: text/plain ... contents of file1.txt ... --AaB03x-- คัดลอกมาจากRFC 1867 - …

2
กำลังสร้างรายการใหม่เพื่อปรับเปลี่ยนคอลเลกชันในแต่ละลูปสำหรับข้อบกพร่องในการออกแบบหรือไม่
เมื่อเร็ว ๆ นี้ฉันได้พบกับการดำเนินการที่ไม่ถูกต้องทั่วไปCollection was modifiedใน C # และในขณะที่ฉันเข้าใจอย่างเต็มที่ดูเหมือนว่าจะเป็นปัญหาที่พบบ่อย (google ผลลัพธ์ประมาณ 300k!) แต่มันก็ดูเหมือนจะเป็นตรรกะและตรงไปตรงมาในการปรับเปลี่ยนรายการในขณะที่คุณทำมัน List<Book> myBooks = new List<Book>(); public void RemoveAllBooks(){ foreach(Book book in myBooks){ RemoveBook(book); } } RemoveBook(Book book){ if(myBooks.Contains(book)){ myBooks.Remove(book); if(OnBookEvent != null) OnBookEvent(this, new EventArgs("Removed")); } } บางคนจะสร้างรายการใหม่เพื่อทำซ้ำ แต่นี่เป็นเพียงการหลีกเลี่ยงปัญหา ทางออกที่แท้จริงคืออะไรหรือปัญหาการออกแบบจริงที่นี่คืออะไร เราทุกคนต้องการทำสิ่งนี้ แต่มันบ่งบอกถึงข้อบกพร่องในการออกแบบหรือไม่?
14 c# 

3
วิธีที่ดีที่สุดในการจัดโครงสร้างและชื่อไฟล์ที่มีคลาสทั่วไปที่มีชื่อเดียวกันคืออะไร?
ในโครงการปัจจุบันของฉันฉันได้พบกับความต้องการในการสร้างชั้นเรียนทั่วไปที่มีชื่อเดียวกัน แต่จำนวนพารามิเตอร์ทั่วไปที่แตกต่างกัน ตัวอย่างเช่น: MyClass<T1> MyClass<T1, T2> MyClass<T1, T2, T3> เนื่องจากฉันต้องการสิ่งเหล่านี้ทั้งหมดในเนมสเปซเดียวกันฉันสับสนว่าจะจัดโครงสร้างและตั้งชื่อคลาสและไฟล์ของฉันได้อย่างไร หากเราปฏิบัติตามแนวคิดที่ว่าเราควรมีคลาสที่ จำกัด เพียงหนึ่งไฟล์ต่อไฟล์และไฟล์นั้นควรอยู่ในโครงสร้างโฟลเดอร์ที่แสดงถึงลำดับชั้นของเนมสเปซและชื่อของไฟล์ควรตรงกับชื่อของคลาสฉันจะจัดการกับสถานการณ์นี้อย่างไร ? สิ่งที่ฉันถามจริงๆนี่คือสิ่งที่ฉันควรตั้งชื่อไฟล์ที่มีMyClass<T1>และสิ่งที่ฉันควรตั้งชื่อไฟล์ที่มีMyClass<T1, T2>? ฉันไม่ได้ถามว่าชื่อของพารามิเตอร์ประเภทควรเป็นอะไร
14 c#  .net 

4
ทำไมต้องใช้ string.Empty มากกว่า“” เมื่อกำหนดให้กับวัตถุสตริง
ฉันใช้งาน StyleCop กับรหัสของฉันและคำแนะนำอย่างหนึ่งของ SA1122 ก็คือการใช้ string.Empty แทนที่จะเป็น "" เมื่อทำการกำหนดสตริงว่างให้กับค่า คำถามของฉันคือเหตุใดจึงถือว่าเป็นวิธีปฏิบัติที่ดีที่สุด หรือนี่เป็นการปฏิบัติที่ดีที่สุดหรือไม่? ฉันคิดว่าคอมไพเลอร์ไม่มีความแตกต่างระหว่างสองข้อความดังนั้นฉันสามารถคิดได้ว่ามันเป็นสิ่งที่สามารถอ่านได้? ดังนั้นคำถามและคำตอบ Jon Skeet ตอบคำถาม
14 c# 

5
วิธีการรับรองมาตรฐานการเข้ารหัสเดียวใน. NET ด้วยการสนับสนุนเครื่องมือ
อาจเป็นสถานการณ์พื้นฐานที่ทุกคนคุ้นเคย คุณได้เห็นด้วยกับมาตรฐานการเข้ารหัสในทีมของคุณและตอนนี้ถึงเวลาที่ต้องทำให้แน่ใจว่าทุกคนติดตามพวกเขา บางคนทำผ่านการเขียนโปรแกรมคู่หนักอื่น ๆ รักษารายการมาตรฐานการเข้ารหัสและทำการตรวจสอบด้วยตนเอง คนอื่น ๆ ยังใช้เครื่องมือวิเคราะห์รหัสคงที่จาก Visual Studio เพื่อให้แน่ใจว่ามีการบังคับใช้มาตรฐานการเข้ารหัส อะไรคือวิธีปฏิบัติที่ดีที่สุดของคุณเพื่อรับรองมาตรฐานการเข้ารหัส? คุณใช้เครื่องมือใด - มีเครื่องมือสำคัญบ้างที่ dev ทุกคนควรรู้ คุณจะรวมมาตรฐานรหัสของคุณในเครื่องมือพัฒนาของคุณได้อย่างไร
14 c#  .net  coding-style 

8
วิธีปฏิบัติในการจัดเก็บข้อมูล "มีขนาดใหญ่พอสมควร" ของข้อมูลที่เปลี่ยนแปลงแทบจะไม่เคย?
คิดในแง่ของตารางการค้นหาที่คำนวณล่วงหน้าหรือบางอย่าง การใช้ฐานข้อมูลแทนค่า hardcoding ในแอปพลิเคชันของฉันมีความเหมาะสมที่จุดใด ค่าจะไม่เปลี่ยนแปลงและแยกออกจากนักพัฒนาการบำรุงรักษาอย่างดี 100 ค่า 1k, 10k, 100k? ฉันต้องการเก็บค่าประมาณ 40k ตอนนี้เป็นswitchคำสั่งที่สร้างโดยเครื่องจักร(ซึ่ง VS2010 ไม่พึงพอใจ) แก้ไข: หากใครอยากรู้อยากเห็นนี่คือวิธีที่ฉันเข้าหานี้: ข้อมูลของฉันถูกเก็บไว้ในอาร์เรย์โฟลต 100k สององค์ประกอบนั่นคือสิ่งที่ฉันทำ ใช้เวลาประมาณ 20 วินาทีในการสร้างข้อมูลดังนั้นฉันจึงทำครั้งเดียวแล้วจัดลำดับข้อมูลนั้นเป็นทรัพยากรที่ฝังตัวด้วย BinaryFormatter การนำข้อมูลออกจากกล่องจะใช้เวลาประมาณ 5 มิลลิวินาทีเมื่อเริ่มต้นแอปพลิเคชันและมีประสิทธิภาพสูงกว่าการใช้ฐานข้อมูลที่ฉันกำลังแทนที่

6
อนุสัญญาการตั้งชื่อแบบใดที่จะใช้สำหรับพารามิเตอร์ฟังก์ชัน C #
มีสถานการณ์เมื่อชื่อที่ส่งผ่านในพารามิเตอร์จะถูกส่งไปเป็นประเภทใหม่ แต่ชื่อของวัตถุที่ผ่านควรจะยังคงคล้ายกัน สำหรับกรณีของคลาสแอททริบิวต์เราสามารถใช้โอเปอเรเตอร์นี้ได้ แต่สิ่งที่เกี่ยวกับตัวแปรโลคอลในฟังก์ชั่น แบบแผนการเข้ารหัสใดที่ใช้กันอย่างแพร่หลาย ตัวอย่าง, void MyFunc(BaseClass myPara) { DerivedClass _mypara = (BaseClass)myPara; } หรือในทางตรงกันข้าม void MyFunc(BaseClass _myPara) { DerivedClass mypara = (BaseClass)_myPara; } หรืออนุสัญญาอื่น ๆ
14 c#  naming 

3
จะจำลองเหตุการณ์ที่ทำให้เกิดข้อยกเว้นเพื่อทดสอบบล็อกลอง / จับได้อย่างไร
ฉันเข้าใจวิธีการทำงานของข้อยกเว้นและวิธีการจับและจัดการกับมันใน C # แต่ฉันจะจำลองเหตุการณ์ที่อาจทำให้เกิดข้อยกเว้นเพื่อให้แน่ใจว่าถูกจับได้อย่างถูกต้องหรือไม่ ตัวอย่างเช่นเป็นไปได้หรือไม่ที่จะเรียกใช้แอปพลิเคชันในรูปแบบของเตียงทดสอบที่สามารถจำลองปัญหาเครือข่ายปัญหาฐานข้อมูลและอื่น ๆ ได้หรือไม่? ข้อยกเว้นโดยธรรมชาติของพวกเขาดูเหมือนจะยากที่จะทำซ้ำจึงทำให้ยากที่จะมั่นใจได้ว่ารหัสของคุณสามารถรับมือกับพวกเขาได้ แม้ว่าฉันส่วนใหญ่จะพัฒนาโดยใช้ C # /. NET / Visual Studio คำตอบหรือแหล่งข้อมูลที่เกี่ยวข้องกับภาษาอื่นอาจมีประโยชน์
14 c#  testing  exceptions 

4
รูปแบบการออกแบบ C # สำหรับคนงานที่มีพารามิเตอร์อินพุตแตกต่างกัน
ฉันไม่แน่ใจว่ารูปแบบการออกแบบใดที่สามารถช่วยแก้ไขปัญหานี้ได้ ฉันมีคลาส 'ผู้ประสานงาน' ซึ่งกำหนดว่าควรใช้คลาสใดของผู้ปฏิบัติงานโดยไม่ต้องทราบเกี่ยวกับประเภทของแรงงานที่มีทั้งหมด - เพียงแค่เรียกใช้ WorkerFactory และดำเนินการตามอินเทอร์เฟซ IWorker ทั่วไป จากนั้นตั้งค่าผู้ปฏิบัติงานที่เหมาะสมให้ทำงานและส่งคืนผลลัพธ์ของวิธี 'DoWork' นี่เป็นเรื่องปกติ ... จนถึงตอนนี้; เรามีข้อกำหนดใหม่สำหรับคลาส Worker ใหม่ "WorkerB" ซึ่งต้องการข้อมูลเพิ่มเติมเช่นพารามิเตอร์อินพุตเพิ่มเติมเพื่อให้สามารถใช้งานได้ มันเหมือนกับว่าเราต้องการวิธีการทำงานหนักที่มีพารามิเตอร์อินพุตเพิ่มเติม ... แต่จากนั้นคนงานที่มีอยู่ทั้งหมดจะต้องใช้วิธีการนั้น - ซึ่งดูเหมือนว่าผิดเพราะคนงานเหล่านั้นไม่ต้องการวิธีการนั้นจริงๆ ฉันจะสร้างสิ่งนี้ใหม่ได้อย่างไรเพื่อให้ผู้ประสานงานไม่ทราบว่ามีการใช้งานของคนงานคนใดและยังอนุญาตให้ผู้ใช้งานแต่ละคนได้รับข้อมูลที่ต้องใช้ในการทำงาน แต่ไม่มีคนงานทำสิ่งที่ไม่จำเป็น มีคนงานที่มีอยู่จำนวนมากอยู่แล้ว ฉันไม่ต้องการเปลี่ยนคนงานคอนกรีตที่มีอยู่เพื่อรองรับความต้องการของคลาส WorkerB ใหม่ ฉันคิดว่าบางทีรูปแบบของ Decorator น่าจะดีที่นี่ แต่ฉันไม่เคยเห็น Decorators ตกแต่งวัตถุด้วยวิธีเดียวกัน แต่ใช้พารามิเตอร์ที่แตกต่างกันมาก่อน ... สถานการณ์ในรหัส: public class Coordinator { public string GetWorkerResult(string workerName, int a, …

1
ประสิทธิภาพของพจนานุกรม C #
พจนานุกรม C # เป็นวิธีที่ง่ายในการค้นหาว่ามีบางอย่างมีอยู่ ฯลฯ ฉันมีคำถามว่าพวกเขาทำงานอย่างไร สมมุติว่าฉันใช้ ArrayList แทนพจนานุกรม แทนที่จะใช้ContainsKey(หรือวิธีที่เทียบเท่าในภาษาอื่น) ฉันวนลูป ArrayList เพื่อตรวจสอบว่ามีบางสิ่งอยู่ที่นั่น (หรือทำการค้นหาแบบไบนารีถ้าข้อมูลเรียงลำดับหรือคล้ายกัน) ประสิทธิภาพแตกต่างกันอย่างไร เป็นContainsKeyวิธีการที่ใช้บางส่วนวิธีที่มีประสิทธิภาพมากกว่าการวนลูปผ่านปุ่มและตรวจสอบว่าสิ่งที่ฉันค้นหาอยู่? ถ้าสมมติว่าฉันได้สร้างฟังก์ชันแฮชเฉพาะซึ่งสอดคล้องกับประเภทของข้อมูลที่ฉันมีและได้รับการออกแบบมาโดยเฉพาะสำหรับชุดข้อมูลนั้นใช่แล้วฟังก์ชันแฮชนั้นเร็วกว่าการวนลูปผ่านข้อมูล แต่พจนานุกรมทั่วไป เมธอด containKey นั้นไม่เฉพาะเจาะจงกับข้อมูลที่ได้รับ แต่เป็นวิธีการค้นหาทั่วไป โดยทั่วไปสิ่งที่ฉันถามคือ พจนานุกรมมีประโยชน์กับโปรแกรมเมอร์ พวกเขามีวิธีการที่ช่วยในหลายสิ่งและพวกเขารวมสตริงกับจำนวนเต็ม (คีย์และค่า) และอีกมากมาย แต่เกี่ยวกับประสิทธิภาพพวกเขาเสนออะไร สิ่งที่แตกต่างในการมีที่dictionaryVS ArrayListของstructs(string,int)

3
ความแตกต่างระหว่างการกำหนดเมื่อถึงตอนนั้น (GWT) และ Arrange Act Assert (AAA)?
ใน TDD มีไวยากรณ์จัดเรียง Assert (AAA): [Test] public void Test_ReturnItemForRefund_ReturnsStockOfBlackSweatersAsTwo_WhenOneInStockAndOneIsReturned() { //Arrange ShopStock shopStock = new ShopStock(); Item blackSweater = new Item("ID: 25"); shopStock.AddStock(blackSweater); int expectedResult = 2; Item blackSweaterToReturn = new Item("ID: 25"); //Act shopStock.ReturnItemForRefund(blackSweaterToReturn); int actualResult = shopStock.GetStock("ID: 25"); //Assert Assert.AreEqual(expectedResult, actualResult); } ในการทดสอบการเขียน BDD ใช้โครงสร้างที่คล้ายกัน แต่มีไวยากรณ์เมื่อเมื่อ (GWT): [Given(@"a …
13 c#  unit-testing  tdd  bdd 

5
วิธีที่จะทำให้การทดสอบหนึ่งขึ้นอยู่กับผลของการทดสอบอื่นได้อย่างไร
สมมติว่ามีคลาสยูทิลิตี้ที่ให้วิธีคงที่ทั่วไปบางอย่างที่ใช้ในทุกที่ในรหัสของคุณโดยชั้นอื่น ๆ คุณจะออกแบบการทดสอบหน่วยของคุณสำหรับผู้บริโภคยูทิลิตี้อย่างไรเพื่อให้การทดสอบล้มเหลวหากการทดสอบยูทิลิตี้ใด ๆ ไม่ผ่าน คุณสามารถทำมันหรือคุณต้องตรวจสอบด้วยตัวคุณเองว่าการทดสอบระดับยูทิลิตี้นั้นเป็นสีเขียวทั้งหมดหรือไม่? ตัวอย่างเช่นฉันมียูทิลิตีตัวแยกข้อความที่ใช้ (หรือค่อนข้างเอาท์พุท) โดยตัวแยกวิเคราะห์ข้อความ ฉันต้องการให้แน่ใจว่าตัวแยกข้อความทำงานได้อย่างถูกต้องก่อนที่ตัวแยกวิเคราะห์ข้อความจะได้รับการทดสอบ ฉันเขียนข้อสอบสำหรับทั้งคู่ แต่มีวิธีเชื่อมโยงและทำการทดสอบหนึ่งชุดขึ้นอยู่กับผลของการทดสอบอื่นหรือไม่ ฉันหาแท็กที่เหมาะสมไม่ได้ แต่ใช้เครื่องมือทดสอบหน่วยของ Visual Studio

4
วิธีนี้ฉันเขียนโค้ดนี้สามารถทดสอบได้ แต่มีอะไรผิดปกติกับฉันหรือเปล่า
IContextฉันมีอินเตอร์เฟซที่เรียกว่า สำหรับวัตถุประสงค์นี้ไม่สำคัญว่าจะทำอะไรยกเว้นดังต่อไปนี้: T GetService<T>(); สิ่งที่วิธีนี้ทำคือดูที่ DI คอนเทนเนอร์ปัจจุบันของแอ็พพลิเคชันและพยายามแก้ไขการพึ่งพา ฉันคิดว่าค่อนข้างมาตรฐาน ในแอปพลิเคชัน ASP.NET MVC ของฉันคอนสตรัคของฉันมีลักษณะเช่นนี้ protected MyControllerBase(IContext ctx) { TheContext = ctx; SomeService = ctx.GetService<ISomeService>(); AnotherService = ctx.GetService<IAnotherService>(); } ดังนั้นแทนที่จะเพิ่มหลายพารามิเตอร์ในตัวสร้างสำหรับแต่ละบริการ (เพราะจะทำให้รำคาญและใช้เวลานานสำหรับนักพัฒนาที่ขยายแอปพลิเคชัน) ฉันใช้วิธีนี้เพื่อรับบริการ ตอนนี้ก็รู้สึกผิด แต่วิธีการที่ฉันกำลังเหตุผลมันอยู่ในหัวของฉันนี้ - ฉันจะเยาะเย้ยมัน ฉันสามารถ. IContextการทดสอบตัวควบคุมนั้นคงไม่ยาก ฉันจะต้องต่อไป: public class MyMockContext : IContext { public T GetService<T>() { if (typeof(T) == typeof(ISomeService)) …

2
วิธีคำนวณการหมุนรูปได้อย่างมีประสิทธิภาพ
ฉันมีรูปที่แสดงผ่านเมทริกซ์ของไบต์ (เมทริกซ์บิตแมปเหมือน) ตัวอย่างรูปที่Picture 1ถูกแสดงบน เป้าหมายคือการหามุมการหมุนที่ดีที่สุดของให้บางรูป เมื่อรูปถูกหมุนด้วยมุมที่ดีที่สุดสี่เหลี่ยมที่ขนานกับแกน X และ Y และจารึกรูปที่มีพื้นที่ที่เล็กที่สุด รูปสี่เหลี่ยมที่จารึกรูปจะแสดงเป็นสีเทาอ่อนบนรูปภาพ ในการPicture 2, คุณจะเห็นว่าการหมุนในอุดมคติของรูปเป็นประมาณ 30 องศาตามเข็มนาฬิกา ทีนี้ฉันรู้ว่าอัลกอริธึมจะหามุมนี้อย่างไร แต่สำหรับฉันมันไม่มีประสิทธิภาพมาก มันจะเป็นเช่นนี้: วนมุมจาก 0 ถึง 45 สำหรับมุมปัจจุบันสำหรับทุกจุดตัวเลขให้คำนวณตำแหน่งใหม่หมุนได้ ค้นหาขอบเขตของสี่เหลี่ยมผืนผ้าที่มีรูป (ต่ำสุดและสูงสุด x, y) และลงทะเบียนถ้ามันเป็นการจับคู่ที่ดีที่สุด มุมถัดไป นี่เป็นวิธีการบังคับแบบเดรัจฉานและทำงานได้ดีและรวดเร็วสำหรับคนร่างเล็ก อย่างไรก็ตามฉันต้องทำงานกับตัวเลขที่มีมากถึง 10 ล้านคะแนนและอัลกอริทึมของฉันช้า อัลกอริทึมที่ดีสำหรับปัญหานี้คืออะไร

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