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

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

2
C # จะรวมกับคอมไพเลอร์ภาษา C ++ หรือไม่ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ตามโพสต์นี้: http://channel9.msdn.com/Forums/Coffeehouse/MS-working-on-a-same-compiler-for-C-AND-C--Not-in-incubation-but-for-production- โพสต์นี้มีความจริงมากแค่ไหน? ควรดำเนินการอย่างจริงจังโดยโปรแกรมเมอร์ C ++ ที่ไม่ยอมใครง่ายๆ (เกม devs ฯลฯ ) หรือไม่? แก้ไข: มีจุดประสงค์อื่นสำหรับคำถามนี้ ... C # จะเข้ากันได้กับ C ++ ย้อนหลังหรือไม่
23 c#  c++ 

9
มอบหมาย vs อินเทอร์เฟซ - มีคำชี้แจงเพิ่มเติมอีกหรือไม่
หลังจากอ่านบทความ - เมื่อใดควรใช้ผู้ได้รับมอบหมายแทนการเชื่อมต่อ (คู่มือการเขียนโปรแกรม C #)ฉันต้องการความช่วยเหลือในการทำความเข้าใจจุดที่กำหนดด้านล่างซึ่งฉันพบว่าไม่ชัดเจน (สำหรับฉัน) ตัวอย่างหรือคำอธิบายโดยละเอียดสำหรับสิ่งเหล่านี้? ใช้ผู้รับมอบสิทธิ์เมื่อ: ใช้รูปแบบการออกแบบเหตุการณ์ มันเป็นที่พึงปรารถนาที่จะแค็ปซูลวิธีการคงที่ ต้องการองค์ประกอบที่ง่าย คลาสอาจต้องการการใช้งานมากกว่าหนึ่งวิธี ใช้อินเทอร์เฟซเมื่อ: มีกลุ่มของวิธีการที่เกี่ยวข้องที่อาจถูกเรียกว่าเป็น คลาสต้องการเพียงหนึ่งการใช้งานเมธอด คำถามของฉันคือ พวกเขาหมายถึงรูปแบบการออกแบบ eventing หรือไม่ วิธีการจัดองค์ประกอบจะง่ายถ้าใช้ผู้รับมอบสิทธิ์ หากมีกลุ่มของวิธีการที่เกี่ยวข้องที่อาจถูกเรียกใช้อินเทอร์เฟซ - มันมีประโยชน์อะไร? ถ้าคลาสต้องการเพียงหนึ่งการใช้งานของวิธีการใช้อินเตอร์เฟซมันเป็นธรรมในแง่ของผลประโยชน์?
23 c#  design  .net 

8
วิธีการใช้หลักการ DRY เมื่อใช้คำหลัก 'ใช้'?
พิจารณาวิธีการเหล่านี้: public List<Employee> GetAllEmployees() { using (Entities entities = new Entities()) { return entities.Employees.ToList(); } } public List<Job> GetAllJobs() { using (Entities entities = new Entities()) { return entities.Jobs.ToList(); } } public List<Task> GetAllTasksOfTheJob(Job job) { using (Entities entities = new Entities()) { return entities.Tasks.Where(t => t.JobId == job.Id).ToList(); } …

7
ไกลแค่ไหนที่ 'var' และตัวดำเนินการรวมตัวกันเป็นโมฆะ '??' ได้รับความบันเทิงโดยไม่ขัดขวางการอ่านหรือไม่
คำถามนี้ถูกโยกย้ายจาก Code Exchange Stack Stack เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 8 ปีที่ผ่านมา ฉันรู้ว่าชื่อของคำถามนั้นเป็นอัตนัยมาก แต่ฉันก็ต้องเผชิญกับการใช้งาน??โอเปอร์เรเตอร์โดยเพื่อนร่วมงานของฉันซึ่งในเวลาเดียวกันฉันก็ไม่ค่อยมีความสุข / สบายใจที่ได้ใช้varโค้ดใหม่ที่กำลังมาถึง อาร์กิวเมนต์ที่ให้สำหรับการใช้??โอเปอเรเตอร์คือมันสามารถอ่านค่าได้ในโค้ด คำถามของฉันคือสิ่งที่เกิดขึ้นไม่เหมือนกันเมื่อคุณเริ่มใช้var?

13
เราวัดความสามารถในการบำรุงรักษาได้อย่างไร
บริบท: ฉันเป็นนักพัฒนาองค์กรในร้าน MS ทั้งหมด ใครช่วยแนะนำวิธีที่ดีในการวัดความสามารถในการบำรุงรักษาโค้ดหรือแอพพลิเคชั่นอย่างเป็นกลาง ? ทำไมการบำรุงรักษา : ฉันเบื่อกับการวัด "คุณภาพ" ในกลุ่มของฉันหมุนรอบจำนวนข้อบกพร่องและความครอบคลุมรหัสเท่านั้น ตัวชี้วัดทั้งสองเป็นเกมที่เล่นง่ายโดยเฉพาะเมื่อคุณไม่ได้วัดการบำรุงรักษา ความสั้นและกำหนดเวลาส่งผลให้เกิดหนี้สินทางเทคนิคจำนวนมหาศาลซึ่งไม่เคยได้รับการแก้ไข ทำไมความสามารถในการวัดอย่างเป็นกลาง : ฉันทำงานในกลุ่มองค์กรขนาดใหญ่ หากคุณไม่สามารถวัดได้อย่างเป็นกลางคุณจะไม่สามารถทำให้ผู้คนรับผิดชอบได้หรือทำให้ดีขึ้น การวัดอัตนัยไม่ได้เกิดขึ้นหรือไม่เกิดขึ้นอย่างสม่ำเสมอ ฉันกำลังดูการวัดโค้ด VS2010แต่ฉันสงสัยว่าใครมีคำแนะนำอื่น ๆ

3
ฉันควรหลีกเลี่ยงการใช้ int ที่ไม่ได้ลงชื่อใน C # หรือไม่
ฉันเพิ่งคิดเกี่ยวกับการใช้จำนวนเต็มไม่ได้ลงนามใน C # (และฉันคิดว่าอาร์กิวเมนต์ที่คล้ายกันสามารถพูดเกี่ยวกับ "ภาษาระดับสูงอื่น ๆ ") เมื่อต้องการจำนวนเต็มปกติแล้วฉันไม่ต้องเผชิญกับภาวะที่กลืนไม่เข้าคายไม่ออกของขนาดของจำนวนเต็มตัวอย่างจะเป็นคุณสมบัติอายุของคลาสบุคคล (แต่คำถามไม่ได้ จำกัด เฉพาะคุณสมบัติ) โดยที่ในใจมีเท่าที่ฉันเห็นเพียงหนึ่งข้อได้เปรียบของการใช้จำนวนเต็มไม่ได้ลงนาม ("uint") มากกว่าจำนวนเต็มลงนาม ("int") - สามารถอ่านได้ หากฉันต้องการแสดงความคิดเห็นว่าอายุเป็นบวกได้ฉันสามารถบรรลุสิ่งนี้ได้โดยการตั้งค่าประเภทอายุเป็น uint ในทางกลับกันการคำนวณจำนวนเต็มที่ไม่ได้ลงชื่อสามารถนำไปสู่ข้อผิดพลาดทุกประเภทและทำให้การดำเนินการเช่นการลบสองอายุทำได้ยาก (ฉันอ่านนี่เป็นหนึ่งในเหตุผลที่ Java ละเว้นจำนวนเต็มที่ไม่ได้ลงชื่อ) ในกรณีของ C # ฉันยังสามารถคิดได้ว่าประโยคของผู้พิทักษ์จะเป็นทางออกที่ให้สิ่งที่ดีที่สุดในโลกทั้งสอง แต่สิ่งนี้จะไม่สามารถใช้ได้เมื่อฉันยกตัวอย่างเช่นอายุจะผ่านไปยังวิธีการบางอย่าง วิธีแก้ปัญหาคือการกำหนดคลาสที่เรียกว่า Age และให้อายุคุณสมบัติเป็นสิ่งเดียวที่มี แต่รูปแบบนี้จะให้ฉันสร้างคลาสจำนวนมากและจะเป็นแหล่งที่มาของความสับสน (นักพัฒนาอื่น ๆ จะไม่ทราบเมื่อวัตถุเป็นเพียงเสื้อคลุม และเมื่อมันมีอะไรบางอย่างที่ทำให้สับสนมากขึ้น) แนวปฏิบัติทั่วไปที่ดีที่สุดเกี่ยวกับปัญหานี้มีอะไรบ้าง ฉันจะจัดการกับสถานการณ์ประเภทนี้ได้อย่างไร

8
เมื่อความหลงใหลดั้งเดิมไม่ได้กลิ่นรหัสคืออะไร?
ฉันได้อ่านบทความจำนวนมากเมื่อเร็ว ๆ นี้ที่อธิบายครอบงำจิตใจดั้งเดิมเป็นกลิ่นรหัส มีประโยชน์สองประการในการหลีกเลี่ยงความหลงใหลดั้งเดิม: ทำให้โมเดลโดเมนชัดเจนยิ่งขึ้น ตัวอย่างเช่นฉันสามารถพูดคุยกับนักวิเคราะห์ธุรกิจเกี่ยวกับรหัสไปรษณีย์แทนที่จะเป็นสตริงที่มีรหัสไปรษณีย์ การตรวจสอบทั้งหมดอยู่ในที่เดียวแทนที่จะใช้ข้ามแอปพลิเคชัน มีบทความมากมายที่อธิบายเมื่อมันเป็นกลิ่นรหัส ตัวอย่างเช่นฉันสามารถเห็นประโยชน์ของการลบความหลงใหลดั้งเดิมสำหรับรหัสโพสต์เช่นนี้: public class Address { public ZipCode ZipCode { get; set; } } นี่คือตัวสร้างของรหัสไปรษณีย์: public ZipCode(string value) { // Perform regex matching to verify XXXXX or XXXXX-XXXX format _value = value; } คุณจะทำลายหลักการDRYโดยวางตรรกะการตรวจสอบความถูกต้องทุกที่ที่ใช้รหัสไปรษณีย์ อย่างไรก็ตามสิ่งที่เกี่ยวกับวัตถุต่อไปนี้: วันเดือนปีเกิด: ตรวจสอบว่ามากเกินใจและน้อยกว่าวันนี้วันที่ เงินเดือน: ตรวจสอบว่ามากกว่าหรือเท่ากับศูนย์ คุณจะสร้างวัตถุ DateOfBirth และวัตถุเงินเดือนหรือไม่ ประโยชน์คือคุณสามารถพูดคุยเกี่ยวกับพวกเขาเมื่ออธิบายรูปแบบโดเมน …


7
อะไรคือ“ วิธีที่ถูกต้อง” ในการใช้ DI ใน. NET
ฉันต้องการใช้การฉีดพึ่งพาในแอพพลิเคชั่นที่ค่อนข้างใหญ่ แต่ไม่มีประสบการณ์ ฉันศึกษาแนวคิดและการใช้งาน IoC และหัวฉีดพึ่งพาบางอย่างเช่น Unity และ Ninject อย่างไรก็ตามมีสิ่งหนึ่งที่ทำให้ฉันหลุดพ้น ฉันจะจัดระเบียบการสร้างอินสแตนซ์ในแอปพลิเคชันของฉันได้อย่างไร สิ่งที่ฉันคิดคือฉันสามารถสร้างโรงงานเฉพาะไม่กี่แห่งซึ่งจะมีตรรกะในการสร้างวัตถุสำหรับชั้นเรียนเฉพาะบางประเภท โดยทั่วไปคลาสสแตติกที่มีเมธอดที่เรียกใช้เมธอด Ninject Get () ของอินสแตนซ์เคอร์เนลแบบสแตติกในคลาสนี้ มันจะเป็นวิธีที่ถูกต้องในการใช้งานการฉีดพึ่งพาในใบสมัครของฉันหรือฉันควรจะใช้มันตามหลักการอื่น ๆ ?

3
ชั้นเรียนที่มีสมาชิกที่ไม่แน่นอนในระหว่างการสร้าง แต่ไม่เปลี่ยนรูปในภายหลัง
ฉันมีอัลกอริทึมที่สร้างชุดของวัตถุ วัตถุเหล่านี้ไม่แน่นอนในระหว่างการสร้างเนื่องจากมันเริ่มต้นด้วยการน้อยมาก แต่จากนั้นจะถูกเติมด้วยข้อมูลในสถานที่ต่าง ๆ ภายในอัลกอริทึม หลังจากอัลกอริธึมเสร็จสมบูรณ์วัตถุไม่ควรเปลี่ยนแปลง - อย่างไรก็ตามมันถูกใช้โดยส่วนอื่น ๆ ของซอฟต์แวร์ ในสถานการณ์เหล่านี้ถือว่าเป็นแนวปฏิบัติที่ดีที่จะมีคลาสสองเวอร์ชันตามที่อธิบายไว้ด้านล่างหรือไม่ จากนั้นอัลกอริทึมจะถูกสร้างขึ้น เมื่ออัลกอริทึมเสร็จสิ้นข้อมูลจะถูกคัดลอกไปยังวัตถุที่ไม่เปลี่ยนรูปซึ่งจะถูกส่งคืน
22 c# 

2
แอปพลิเคชัน ASP.NET MVC ควรใช้ Entity Framework โดยตรงเป็นโมเดลหรือไม่
ฉันกำลังสร้างแอปพลิเคชัน MVC แรกของฉันใน Visual Studio 2013 (MVC 5) และฉันยังไม่ชัดเจนเกี่ยวกับวิธีที่ดีที่สุดในการตั้งค่าแบบจำลองของฉัน ฉันสร้างโมเดลเอนทิตี้ของเฟรมเวิร์กโดยใช้รหัส - แรกจากฐานข้อมูลที่มีอยู่ สัญชาตญาณแรกของฉันคือการสร้างคลาสตัวกลางที่จะเป็นโมเดลที่ใช้โดยมุมมองและให้คลาสเหล่านั้นทำงานกับคลาสเฟรมเวิร์กเอนทิตี ในขณะที่ฉันกำลังเขียนคลาสคนกลางฉันรู้ว่าฉันเพิ่งจะติดตั้งสิ่งต่าง ๆ มากมายที่ชั้นเรียนของ EF ได้ทำกับ setter ส่วนตัวเป็นครั้งคราวหรือส่งจากประเภทข้อมูลหนึ่งไปยังอีกประเภทหนึ่ง ดังนั้นดูเหมือนว่าจะเสียเปล่า กฎทั่วไปใช้คลาสเอนทิตี้ของเฟรมเวิร์กเป็นโมเดลสำหรับแอปพลิเคชัน MVC โดยตรงหรือไม่ หรือมีประโยชน์บางอย่างที่ฉันขาดไปในการสร้างคลาสตัวกลางเหล่านี้หรือไม่?

4
ถ้า MVC เป็น“ การแยกความกังวล” ดังนั้นทำไมจึงมีการแนะนำไวยากรณ์ของมีดโกนไว้
คำถามของฉันเกี่ยวข้องกับรูปแบบการออกแบบ MVC และมีดโกนที่แนะนำโดย Microsoft ในขณะที่การเรียนรู้รูปแบบการออกแบบ MVC ผมก็บอกว่าความคิดที่มีพื้นฐานอยู่บนหลักการที่เรียกว่าการแยกความกังวลเกี่ยวกับ แต่มีดโกน Syntax ช่วยให้เราสามารถใช้ C # ในViewsโดยตรง ข้อกังวลนี้แยกกันหรือเปล่า

3
ฉันควรใช้รายการหรืออาเรย์
ฉันกำลังทำงานบนฟอร์ม windows เพื่อคำนวณ UPC สำหรับหมายเลขรายการ ฉันประสบความสำเร็จในการสร้างหมายเลขที่จะจัดการหมายเลขรายการ / UPC ทีละรายการตอนนี้ฉันต้องการขยายและทำสำหรับหลายรายการหมายเลข / UPCs ฉันเริ่มและลองใช้รายการ แต่ฉันยังคงติดอยู่ ฉันสร้างคลาสผู้ช่วยเหลือ: public class Codes { private string incrementedNumber; private string checkDigit; private string wholeNumber; private string wholeCodeNumber; private string itemNumber; public Codes(string itemNumber, string incrementedNumber, string checkDigit, string wholeNumber, string wholeCodeNumber) { this.incrementedNumber = incrementedNumber; this.checkDigit = …
22 c#  array  winforms  list 

2
การออกแบบโดเมนขับเคลื่อน - พึ่งพาภายนอกในปัญหาเอ็นติตี้
ฉันต้องการเริ่มต้น Domain-Driven-Design แต่มีปัญหาหลายอย่างที่ฉันต้องการแก้ไขก่อนเริ่มต้น :) ลองนึกภาพฉันมีกลุ่มและผู้ใช้และเมื่อผู้ใช้ต้องการเข้าร่วมกลุ่มฉันกำลังเรียกgroupsService.AddUserToGroup(group, user)วิธี ใน DDD ฉันควรทำgroup.JoinUser(user)ซึ่งดูดีทีเดียว ปัญหาจะปรากฏขึ้นหากฉันมีกฎการตรวจสอบความถูกต้องบางประการสำหรับการเพิ่มผู้ใช้หรืองานภายนอกบางอย่างจำเป็นต้องเริ่มต้นเมื่อมีการเพิ่มผู้ใช้ในกลุ่ม การมีงานเหล่านี้จะนำไปสู่เอนทิตีที่มีการอ้างอิงภายนอก ตัวอย่างอาจเป็น - ข้อ จำกัด ที่ผู้ใช้สามารถเข้าร่วมได้สูงสุด 3 กลุ่มเท่านั้น วิธีนี้จะต้องใช้การเรียก DB จากภายในกลุ่มวิธีใช้ JoinUser เพื่อตรวจสอบความถูกต้องนี้ แต่ความจริงที่ว่า Entity นั้นขึ้นอยู่กับบริการ / คลาสภายนอกบางอย่างนั้นดูไม่ดีนัก วิธีที่เหมาะสมในการจัดการกับสิ่งนี้ใน DDD คืออะไร?

6
การเขียนโปรแกรมเชิงมุมมอง: เมื่อใดที่จะเริ่มใช้เฟรมเวิร์ก
ฉันเพิ่งดูการสนทนานี้โดยGreg Youngเตือนผู้คนถึง KISS: Keep It Simple Stupid หนึ่งในสิ่งที่เขาบอกว่าจะทำอย่างไรการเขียนโปรแกรมเชิงลักษณะอย่างใดอย่างหนึ่งไม่ได้ต้องกรอบ เขาเริ่มต้นด้วยการทำให้มีข้อ จำกัด ที่แข็งแกร่ง: วิธีการทั้งหมดใช้เวลาหนึ่งและเพียงหนึ่งพารามิเตอร์ (แม้ว่าเขาจะผ่อนคลายนี้เล็กน้อยในภายหลังโดยใช้โปรแกรมบางส่วน ) ตัวอย่างที่เขามอบให้คือการกำหนดอินเตอร์เฟส: public interface IConsumes<T> { void Consume(T message); } ถ้าเราต้องการออกคำสั่ง: public class Command { public string SomeInformation; public int ID; public override string ToString() { return ID + " : " + SomeInformation + Environment.NewLine; } …

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