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

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

5
ฉันควรใช้วิธีนามธรรมหรือเสมือน?
หากเราสมมติว่ามันไม่เป็นที่พึงปรารถนาสำหรับคลาสฐานที่จะเป็นคลาสอินเตอร์เฟสที่บริสุทธิ์และใช้ 2 ตัวอย่างจากด้านล่างซึ่งเป็นวิธีที่ดีกว่าโดยใช้คำนิยามคลาสของวิธีนามธรรมหรือเสมือน? ข้อได้เปรียบของเวอร์ชั่น "นามธรรม" คือมันอาจดูสะอาดและบังคับให้คลาสที่ได้รับมาเพื่อให้การใช้งานมีความหมายอย่างมีความหวัง ข้อได้เปรียบของเวอร์ชัน "เวอร์ชวล" คือสามารถดึงโมดูลได้ง่ายและใช้สำหรับการทดสอบโดยไม่ต้องเพิ่มเฟรมพื้นฐานมากมายเหมือนเวอร์ชั่นนามธรรมที่ต้องการ เวอร์ชั่นบทคัดย่อ: public abstract class AbstractVersion { public abstract ReturnType Method1(); public abstract ReturnType Method2(); . . public abstract ReturnType MethodN(); ////////////////////////////////////////////// // Other class implementation stuff is here ////////////////////////////////////////////// } รุ่นเสมือน: public class VirtualVersion { public virtual ReturnType Method1() { return …
11 c#  design 

4
วิธีปฏิบัติที่ดีที่สุดที่ส่งคืนวัตถุแบบอ่านอย่างเดียว
ฉันมีคำถาม "แนวปฏิบัติที่ดีที่สุด" เกี่ยวกับ OOP ใน C # (แต่การเรียงลำดับจะใช้กับทุกภาษา) พิจารณาการมีคลาสห้องสมุดที่มีวัตถุที่ต้องเปิดเผยต่อสาธารณะพูดผ่านตัวเข้าถึงคุณสมบัติ แต่เราไม่ต้องการให้ประชาชน (ผู้ที่ใช้คลาสไลบรารีนี้) เปลี่ยนมัน class A { // Note: List is just example, I am interested in objects in general. private List<string> _items = new List<string>() { "hello" } public List<string> Items { get { // Option A (not read-only), can be …

2
ต้องการการตีความของส่วนในข้อกำหนด C #
ฉันกำลังอ่านสเปค C # ฉันสามารถใช้ความกระจ่างในเซ็กเมนต์: C # มีระบบพิมพ์รวม ชนิด C # ทั้งหมดรวมถึงชนิดดั้งเดิมเช่น int และ double สืบทอดมาจากประเภทวัตถุรากเดียว ดังนั้นทุกประเภทแบ่งปันชุดของการดำเนินงานทั่วไปและค่าของประเภทใด ๆ สามารถจัดเก็บขนส่งและดำเนินการในลักษณะที่สอดคล้องกัน นอกจากนี้ C # ยังสนับสนุนทั้งประเภทการอ้างอิงที่ผู้ใช้กำหนดและประเภทค่าช่วยให้การจัดสรรวัตถุแบบไดนามิกเช่นเดียวกับการจัดเก็บข้อมูลในบรรทัดของโครงสร้างที่มีน้ำหนักเบา “ ที่เก็บข้อมูลในบรรทัดของโครงสร้างที่มีน้ำหนักเบา” หมายถึงอะไรในบริบทนี้

2
เป็นวิธีที่เหมาะสมในการสร้างแอป Winform ด้วย "หน้าจอ" หลายหน้าจอ
วิธีที่เหมาะสมในการสร้างแอป Winform ที่มี 'หน้าจอ' หลายรายการคืออะไร ตัวอย่างเช่นฉันกำลังพยายามเขียนโปรแกรมสำรองข้อมูลขนาดเล็ก (ส่วนใหญ่สำหรับ giggles) และฉันได้ทิ้งการควบคุมและคอนเทนเนอร์ลงในแบบฟอร์ม ฉันใช้พาเนลและกล่องกลุ่มเพื่อแยกหน้าจอที่แตกต่างกันออกไป (เช่น: ฉันใช้แผงควบคุมทั้งหมดสำหรับหน้าต่าง "การตั้งค่า" และอีกพาเนลอื่นเพื่อแสดงการสำรองข้อมูลปัจจุบันทั้งหมดที่ตั้งค่าไว้ ) ไฟล์ form.cs ของฉันใส่เข้าไปในโค้ดจำนวนมากและฉันรู้สึกว่าฉันทำอะไรผิดไป ฉันแทบจะไม่พบสิ่งใดในไฟล์และฉันพร้อมที่จะเริ่มต้นใหม่ โครงการนี้เป็นเพียงสำหรับฉันที่จะขยายความรู้ของฉันของ C # และ. NET ดังนั้นการเริ่มต้นโครงการใหม่จึงไม่ใช่เรื่องใหญ่
11 c#  gui  winforms  gui-design 

13
การจัดการกับน้ำซุปรั้งหยิก
ฉันเขียนโปรแกรมทั้ง C # และ VB.NET มาหลายปีแล้ว แต่ส่วนใหญ่เป็น VB ฉันเปลี่ยนอาชีพไปสู่ ​​C # และโดยรวมแล้วฉันชอบ C # ดีกว่า แต่ประเด็นหนึ่งที่ฉันมีก็คือซุปรั้งปีกนก ใน VB คำหลักโครงสร้างแต่ละคำมีคีย์เวิร์ดปิดที่ตรงกันตัวอย่างเช่น: Namespace ... Class ... Function ... For ... Using ... If ... ... End If If ... ... End If End Using Next End Function End Class End Namespace รหัสเดียวกันที่เขียนใน C …

5
ฉันควรล้างส่วน "การใช้งาน" ด้วยเหตุผลใดใน C #
เมื่อฉัน refactoring รหัสของฉันฉันก็ขึ้น IDE ไปยังส่วนการใช้งานของคลาส C # ของฉันและทำความสะอาดnamespaces ที่ไม่ได้ใช้และnamespaces ที่ซ้ำกันและเรียงลำดับพวกเขาทั้งหมด คู่ของฉัน (การเขียนโปรแกรมคู่) ถามฉันถึงเหตุผล ฉันไม่รู้ว่าทำไมฉันถึงทำอย่างนั้น ฉันทำมันออกจากนิสัยเพื่อรักษารหัสของฉันให้สะอาดและเป็นระเบียบเรียบร้อย ฉันหมายความว่าฉันบอกเขาว่ามีรหัสทำความสะอาดเป็นความคิดที่ดีในการทั่วไป แต่แน่นอนว่าเหตุผลที่ไม่ได้เป็นเหตุผลที่ดีที่ผมจะไม่ได้รำคาญที่จะใช้เวลาของฉันในการใช้ส่วนของ C # หน้ารหัสใด ๆ เนื่องจากหลายครั้งที่คุณย้ายคลาสหรือ enum (หรือประเภททั่วไป) จากเนมสเปซหนึ่งไปยังเนมสเปซอื่นและนี่เป็นการเพิ่มคำสั่งใหม่โดยใช้คำสั่งในรหัสของคุณ (ไม่ว่าจะด้วยตนเองโดยขึ้นไปที่หน้าต่างรหัส ผ่านการแก้ไขโดยใช้Alt+ Ctrl+ F10รวมกัน) และตั้งแต่เหล่านี้ใหม่โดยใช้งบจะถูกเพิ่มเข้าไปในส่วนท้ายของใช้ส่วนซึ่งทำให้พวกเขาไม่ได้เรียงตามตัวอักษรและตั้งแต่คอมไพเลอร์ไม่เคยร้องเรียนเกี่ยวกับปัญหาใด ๆ เหล่านี้ว่าทำไมเราควรสนใจที่จะทำให้เรื่องนี้ ส่วนที่สะอาดและเป็นระเบียบ? เรามีเหตุผลอะไรบ้าง

4
ออกแบบในภาษา“ แบบผสม”: การออกแบบเชิงวัตถุหรือการโปรแกรมเชิงฟังก์ชันหรือไม่?
ในช่วงไม่กี่ปีที่ผ่านมาภาษาที่ฉันชอบใช้นั้นเพิ่มมากขึ้น ตอนนี้ฉันใช้ภาษาที่เป็น "ลูกผสม": C #, F #, Scala ฉันชอบที่จะออกแบบแอปพลิเคชันของฉันโดยใช้คลาสที่สอดคล้องกับวัตถุโดเมนและใช้คุณสมบัติการทำงานที่ทำให้การเขียนรหัสง่ายขึ้นตรงและปลอดภัยยิ่งขึ้น (โดยเฉพาะอย่างยิ่งเมื่อทำงานกับคอลเลกชัน อย่างไรก็ตามทั้งสองโลก "ปะทะกัน" เมื่อมาถึงรูปแบบการออกแบบ ตัวอย่างเฉพาะที่ฉันเผชิญเมื่อเร็ว ๆ นี้คือรูปแบบการสังเกตการณ์ ฉันต้องการให้ผู้ผลิตแจ้งรหัสอื่น ๆ ("ผู้บริโภค / ผู้สังเกตการณ์" พูดที่เก็บข้อมูล DB ตัวบันทึกและอื่น ๆ ) เมื่อรายการถูกสร้างหรือเปลี่ยนแปลง ตอนแรกฉันทำมัน "ตามหน้าที่" เช่นนี้: producer.foo(item => { updateItemInDb(item); insertLog(item) }) // calls the function passed as argument as an item is processed แต่ตอนนี้ฉันสงสัยว่าฉันควรใช้วิธีการ "OO" …

3
ความแตกต่างระหว่างอินเตอร์เฟสทั่วไปของคอลเลกชันทั่วไปใน C #
ฉันได้เล่นกับ C # สำหรับ Windows และ ASP.net MVC พัฒนามาระยะหนึ่งแล้ว แต่ฉันยังไม่ชัดเจนในบางพื้นที่ ฉันกำลังพยายามที่จะเข้าใจความแตกต่างขั้นพื้นฐานระหว่างและปัญหาการปฏิบัติงานเกี่ยวกับการใช้และการสับเปลี่ยนชนิดที่คล้ายกันของทั่วไปการเก็บการเชื่อมต่อ คือความแตกต่างระหว่างสิ่งที่พื้นฐานIEnumerable<T>, ICollection<T>, List<T>(Class)? ฉันดูเหมือนจะใช้และแลกเปลี่ยนโดยไม่เห็นปัญหาใด ๆ ในแอปพลิเคชันของฉัน นอกจากนี้ยังมีคอลเลกชันทั่วไปที่คล้ายกันมากกว่านี้ที่สามารถแลกเปลี่ยนกับสามเหล่านี้ได้หรือไม่

4
สกาล่าจะเป็นทางเลือกที่ดีแทนที่จะเป็นจาวา
เราจะเริ่มโครงการใหม่ซึ่งจะเกี่ยวข้องกับการฝึกอบรมผู้พัฒนา. net ทั้งหมดใน Java (frameworks / ECO system ฯลฯ ) เรามีโค้ดจำนวนมากที่เขียนใน C # และดูเหมือนว่าทั้งหมดนี้จะสูญเปล่าเนื่องจากเราต้องเขียนใหม่ทั้งหมดใน Java ปัญหาที่ฉันเห็นคือว่าในปีแรกหรือประมาณสองปีเราจะไม่มีอะไรจะส่งมอบเพราะเราจะใช้เวลาส่วนใหญ่ในการทำซ้ำสิ่งที่เรามีมาก่อน แต่ตอนนี้ใน Java เนื่องจากทีมของเรากระจายอยู่ในสำนักงานต่าง ๆ ทั่วโลกและเรามีนักพัฒนาจาวาจำนวนมาก (20 ถึง 30) และนักพัฒนา 10 คนที่ใช้. net เราต้องการให้นักพัฒนาทั้งหมดใช้ภาษา / แพลตฟอร์มเดียวกันเพื่อให้เราสามารถเริ่ม นำส่วนประกอบ / โมดูลกลับมาใช้ใหม่ ดังนั้นฉันสามารถเข้าใจมุมมองของผู้บริหาร เมื่อวานฉันเจอ Scala และสงสัยว่ามันจะดีกว่าถ้าจะใช้กับผลิตภัณฑ์ปัจจุบัน (ซึ่งเขียนใน C #) แล้วอย่างน้อยเราก็จะมีผลิตภัณฑ์ที่ใช้งานได้ในหนึ่งปี นอกจากนี้ในหนึ่งปีเรามีโมดูลที่สามารถใช้ในโลก Java ได้ในขณะที่เราย้ายข้อมูลส่วนอื่น ๆ ของผลิตภัณฑ์ Scala จะเป็นตัวเลือกที่ดีกว่า Java …
11 java  c#  scala 

2
อะไรคือความสัมพันธ์ระหว่าง Dynamic Language Runtime และ C # 4.0?
สมมติว่าฉันต้องการสร้างตัวแปลภาษา / ตัวแปลภาษาแบบไดนามิกซึ่งอาจเป็นล่าม Scheme บนแพลตฟอร์ม. NET ที่มีอยู่ในปัจจุบัน ฉันจะดีกว่าถ้าใช้Dynamic Language Runtime (DLR) หรือใช้ C # 4.0 เพื่อใช้คุณสมบัติแบบไดนามิกของภาษาของฉันหรือไม่ หรือฉันต้องการทั้งสองอย่าง? ฉันรู้ว่ามีได้รับงานอื่น ๆ ที่ทำในพื้นที่นี้โดยเฉพาะอย่างยิ่งกับIronSchemeและIronPython ทั้งสองภาษาใช้ DLR ฉันเชื่อว่า IronPython ใช้เวอร์ชั่นล่าสุดของ DLR (ซึ่งเป็นอายุประมาณหนึ่งปี) ในขณะที่ IronScheme ใช้ต้น fork ที่มีการดัดแปลงแก้ไขอย่างรวดเร็วของเวอร์ชันแรก ๆ ของ DLR แต่ C # 4.0 ไม่สามารถใช้ได้เมื่อคอมไพเลอร์เหล่านี้ถูกสร้างขึ้น ฉันเคยเห็น Rob Conery ทำงานกับMassiveโดยใช้คุณสมบัติแบบไดนามิกของ C # 4.0 มันค่อนข้างน่าประทับใจ แต่ C …

3
ฉันจะอ่านเอกสารแนะนำตัว C # ต้นฉบับโดย Microsoft ได้ที่ไหน [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา เมื่อ Microsoft แสดง. NET Framework และภาษา C # ในปี 2002 บทความแรกที่แนะนำ C # คืออะไร ฉันกำลังมองหาบทความที่ตีพิมพ์บนเว็บไซต์ MSDN หรือ Microsoft ที่จะอธิบายความต้องการภาษาอื่นพูดคุยบางพื้นหลังและอาจมีตัวอย่างโค้ด นอกจากนี้ฉันสนใจในการแนะนำ C # ดั้งเดิมไม่ได้อยู่ในเอกสาร. NET Framework ทั่วไป ฉันจำได้ว่าเอกสาร. NET ยุคแรกนั้นค่อนข้างที่จะมีหมอกและในขณะที่มันมีส่วนร่วมที่ค่อนข้างสนุกที่จะอ่านมันอีกครั้ง
11 c#  microsoft  history  msdn 

4
ใช้การฉีดพึ่งพาสำหรับวัตถุข้อมูลหรือไม่
ฉันแค่เรียนรู้เกี่ยวกับการฉีดพึ่งพาและติดอยู่กับบางสิ่ง การพึ่งพาการฉีดแนะนำให้ส่งคลาสที่ต้องพึ่งพาผ่านตัวสร้าง แต่ฉันสงสัยว่านี่เป็นสิ่งจำเป็นสำหรับวัตถุข้อมูลหรือไม่ เนื่องจาก Unit-Testability เป็นหนึ่งในประโยชน์หลักของ DI จะเป็น data data ที่เก็บข้อมูลเท่านั้นไม่ใช่โพรซีเดอร์ใด ๆ ที่เคยถูกทดสอบโดยหน่วยทำให้ DI เป็นเลเยอร์ที่ซับซ้อนโดยไม่จำเป็นหรือยังช่วยแสดงการพึ่งพา กับวัตถุข้อมูล? Class DO{ DO(){ DataObject2List = new List<DO2>(); } public string Field1; public string Field2; public List<DO2> DataObject2List; } Class DO2{ public DateTime Date; public double Value; }

8
อนุสัญญาการตั้งชื่อตัวแปร? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันเพิ่งเริ่มใช้ ReSharper (สำหรับ C #) และฉันชอบโปรแกรมค้นหารหัสกลิ่นมันแสดงให้ฉันเห็นบางอย่างเกี่ยวกับการเขียนของฉันที่ฉันต้องการแก้ไขเมื่อนานมาแล้ว (หลักการตั้งชื่อตัวแปรส่วนใหญ่) มันทำให้ฉันพิจารณาอนุสัญญาการตั้งชื่อของฉันอีกครั้งสำหรับวิธีการและตัวแปรอินสแตนซ์ ReSharper แนะนำว่าตัวแปรอินสแตนซ์นั้นเป็นตัวพิมพ์เล็กอูฐและเริ่มต้นด้วยเครื่องหมายขีดล่าง ในขณะที่ฉันตั้งใจจะทำให้ตัวแปรท้องถิ่นทั้งหมดของฉันลดขนาดอูฐ แต่จำเป็นต้องเน้นหรือไม่ คุณรู้สึกสบายไหม ฉันไม่ชอบอนุสัญญานี้ แต่ฉันยังไม่ได้ลองเลยคุณคิดยังไง? สิ่งที่สองที่กระตุ้นให้ฉันประเมินใหม่คือข้อกำหนดการตั้งชื่อของฉันสำหรับตัวจัดการเหตุการณ์ GUI ฉันมักจะใช้มาตรฐาน VS ของ ControlName_Action และการควบคุมของฉันมักจะใช้สัญกรณ์ฮังการี (เป็นคำต่อท้ายเพื่อช่วยชี้แจงในรหัสสิ่งที่ผู้ใช้มองเห็นและสิ่งที่ไม่เมื่อจัดการกับตัวแปรที่มีชื่อคล้ายกัน) ดังนั้นฉันจึงจบลงด้วย OK_btn_Click ( ) คุณมีความเห็นอย่างไรต่อเรื่องนี้ ฉันควรยอมแพ้กับการประชุม ReSharper หรือมีตัวเลือกอื่น ๆ ที่ใช้ได้อย่างเท่าเทียมกัน?
11 c#  naming  resharper 

1
ไม่มีใครเข้าใจว่า MonoDroid ตายจริงหรือไม่
บริษัท ของฉันเพิ่งลงทุนในเครื่องมือMono สำหรับ Androidสำหรับ Visual Studio เนื่องจากเรามีนักพัฒนา. NET จำนวนมากและประทับใจกับประสิทธิภาพของเครื่องมือ monodroid หลังจากอ่านโพสต์ ZDNetฉันรู้สึกเศร้าใจที่เห็นว่าโครงการนี้อาจจะตาย มีใครบ้างที่อาจรู้อะไรมากกว่าเรื่องที่ระบุไว้ในบทความนี้ เห็นได้ชัดว่าผู้พัฒนาหลายคนถูกปล่อยจากโครงการโมโน แต่ฉันสงสัยว่ามันจริงหรือเปล่า ข้อมูลใด ๆ ที่จะได้รับการชื่นชมอย่างมาก เราเพิ่งซื้อสิทธิ์ใช้งาน Enterprise 5 ซึ่งค่อนข้างแพงและฉันค่อนข้างบ้าถ้ามันตายหลังจากที่ฉันเพิ่งซื้อสิ่งนี้และเริ่มเรียนรู้มัน!
11 c#  .net  monodroid 

10
จุดของคุณสมบัติคืออะไร?
นี่คือข้อโต้แย้งบางประการสำหรับคุณสมบัติและข้อโต้แย้งของฉัน: ใช้งานง่ายกว่าการเขียนวิธี getter และ setter คู่ของ Getter และ setter เป็นกลิ่นของโค้ด การทำให้ง่ายต่อการเขียนสิ่งเหล่านี้ก็เหมือนกับการทำให้ล้มเหลวในการทดสอบคณิตศาสตร์โดยใช้แบบฟอร์ม Scantron และเติมใน 'C's ทั้งหมด วัตถุที่มีเพียงสถานะสำหรับการคงอยู่ไม่ควรใช้ getters / setters และควรสร้างวัตถุที่ไม่เปลี่ยนรูปในเวลาที่มีอยู่ สิ่งที่สำคัญสำหรับผู้บริโภคของวัตถุคือสิ่งที่มันทำไม่ได้เป็นอย่างไร พฤติกรรมของมันคือสิ่งที่มันทำ; สถานะของมันเป็นอย่างไร หากคุณพบว่าตัวเองสนใจเกี่ยวกับสถานะของวัตถุ (ยกเว้นการคงอยู่แม้ว่าสิ่งนี้จะทำลาย OO) คุณก็ไม่ได้ทำ OOP และสูญเสียข้อดีของมัน พวกเขาให้ข้อบ่งชี้ประสิทธิภาพอย่างคร่าว ๆ กับผู้บริโภค นี่คือสิ่งที่สามารถเปลี่ยนแปลงได้ในอนาคตสำหรับอสังหาริมทรัพย์ใด ๆ ก็ตาม สมมติว่าในรีลีส 1.0 การเข้าถึง PropertyX จะส่งคืนฟิลด์ ในรีลีส 1.5 หากฟิลด์เป็นโมฆะ PropertyX จะใช้รูปแบบวัตถุ Null เพื่อสร้างวัตถุ null ใหม่ ในรุ่น …

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