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

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

5
หลักการตั้งชื่อที่ดีสำหรับประเภททั่วไปใน C # คืออะไร [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันตัดสินใจถามคำถามนี้ที่นี่แทนที่จะเป็นแบบล้นสแต็กเพราะมันค่อนข้างเป็นอัตนัย ใน C # ปกติฉันเห็นประเภททั่วไปที่มีชื่อไม่ดี โดยทั่วไปมักใช้ "T" แต่ไม่ใช่ชื่อที่สื่อความหมายด้วยตัวเอง ตัวอย่างเช่น: class Fruit<T> { T fruit; } ในขณะที่นี่เป็นวิธีการทั่วไปใครจะแนะนำต่อต้านนี้ และถ้าเป็นเช่นนั้นแผนการตั้งชื่อที่สมเหตุสมผลจะเป็นประเภททั่วไปในบริบทของ C # สำหรับฟังก์ชันและคลาสทั่วไป ในตัวอย่างก่อนหน้านี้สมมติว่าประเภททั่วไปTมักจะต้องเป็นชนิดของผลไม้เช่นหรือApple OrangeประเภทTต้องทำให้ชัดเจนว่าเป็นผลไม้ชนิดหนึ่งดังนั้นอาจเป็นชื่อที่ดีกว่าFruitTypeดังนั้นเราจึงจบลงด้วย: class Fruit<FruitType> { FruitType fruit; } นี่เป็นเพียงเพื่อให้พวกคุณได้คิดในสิ่งที่ฉันกำลังมอง "กฎง่ายๆ" ที่ยอมรับได้สำหรับปัญหานี้คืออะไร
16 c#  naming  generics 

6
เหตุใดการปิด JavaScript จึงสำคัญสำหรับ JavaScript
การแสดงออกแลมบ์ดาของ C # ก็มีการปิดเช่นกันแต่ไม่ค่อยมีการพูดคุยกันโดยชุมชนหรือหนังสือ C # ฉันเห็นคน JavaScript และหนังสือพูดถึงการปิดตัวมันมากกว่าที่พวกเขาทำในโลก C # ทำไมถึงเป็นอย่างนั้น?

2
อะไรคือหลักปฏิบัติและรูปแบบการออกแบบที่ผู้ชาย. NET ทุกคนควรรู้ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ในช่วงเวลาสั้น ๆ ของฉันในฐานะโปรแกรมเมอร์มืออาชีพฉันได้เห็นแอปพลิเคชั่นมากมายที่เขียนขึ้นโดยโปรแกรมเมอร์ผู้ซึ่งการศึกษาทั้งหมดดูเหมือนจะได้อ่านบทแรก ๆ สองเล่มในหนังสือ. NET 2.0 เฮ็คเมื่อฉันเริ่มฉันเขียนแอพพลิเคชั่นเหล่านั้นส่วนใหญ่! รูปแบบการออกแบบที่ใหญ่ที่สุดคืออะไรสำคัญสำหรับการเขียนแอปพลิเคชัน AWESOME .NET โดยที่ยอดเยี่ยมฉันหมายถึงภายในด้วย!

8
คำถามสัมภาษณ์ LINQ อาวุโส [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันกำลังเตรียมส่วน LINQ ในคำถามสัมภาษณ์สำหรับโปรแกรมเมอร์อาวุโส คำถามที่น่าสนใจที่สุดใน LINQ ที่จะรวมคืออะไร และทำไม?
16 c#  .net  interview  linq 

10
การใช้งาน C # Delegates ในโลกแห่งความเป็นจริง [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันคิดว่าฉันเข้าใจแนวคิดของผู้ได้รับมอบหมาย C # แต่ฉันพยายามดิ้นรนเพื่อหาตัวอย่างโลกแห่งความจริงที่พวกเขาจะมีประโยชน์ คุณสามารถให้คำตอบโดยละเอียดเกี่ยวกับวิธีการใช้ผู้รับมอบสิทธิ์ C # ในแอปพลิเคชันจริงและปัญหาใดที่พวกเขาทำให้คุณสามารถแก้ไขได้
16 c#  delegates 

6
แปลงจากกระบวนงานเป็นรหัสที่เน้นวัตถุ
ฉันอ่านการทำงานอย่างมีประสิทธิภาพด้วย Legacy CodeและClean Codeโดยมีเป้าหมายของกลยุทธ์การเรียนรู้เกี่ยวกับวิธีเริ่มทำความสะอาดโค้ด - ฐานที่มีอยู่ของแอปพลิเคชัน ASP.NET webforms ขนาดใหญ่ ระบบนี้มีมาตั้งแต่ปีพ. ศ. 2548 และตั้งแต่นั้นมาก็มีการปรับปรุงหลายอย่าง แต่เดิมรหัสมีโครงสร้างดังนี้ (และยังคงเป็นโครงสร้างส่วนใหญ่ด้วยวิธีนี้): ASP.NET (aspx / ascx) รหัส - หลัง (c #) ชั้นตรรกะทางธุรกิจ (c #) ชั้นการเข้าถึงข้อมูล (c #) ฐานข้อมูล (Oracle) ปัญหาหลักคือรหัสคือการปลอมแปลงตามขั้นตอนเป็นเชิงวัตถุ มันเป็นการละเมิดแนวทางทั้งหมดที่อธิบายไว้ในหนังสือทั้งสองเล่ม นี่คือตัวอย่างของคลาสทั่วไปใน Business Logic Layer: public class AddressBO { public TransferObject GetAddress(string addressID) { if (StringUtils.IsNull(addressID)) { …

4
วิธีปฏิบัติที่ดีที่สุดในการจัดเก็บ DateTime โดยใช้ TimeZone
การพัฒนาเว็บแอปพลิเคชันที่ควรอนุญาตให้ผู้ใช้กำหนดเวลาการนัดหมายตามโซนเวลาของพวกเขา และฉันกำลังจัดเก็บวันที่และเวลาที่ผู้ใช้กำหนดไว้เป็นวันที่เซิร์ฟเวอร์ลงในฐานข้อมูล ในขณะที่แสดงข้อมูลกำหนดการดึงค่าจากฐานข้อมูลและแปลงเป็นเขตเวลาผู้ใช้ กำลังประมวลผลในรหัสฐานฉันกำลังแปลง DateTime ตามเขตเวลาของผู้ใช้ กรุณาแนะนำว่าวิธีปฏิบัติที่ดีที่สุดนี้มีอยู่หรือไม่

3
ประโยชน์ที่ได้รับจากแบบจำลอง POCO ล้วนคืออะไร
ประโยชน์หลักของการมีโมเดล POCO บริสุทธิ์คืออะไร ฉันได้รับแบบจำลองที่ควรจะสะอาดและเรียบง่าย แต่ฉันมักจะชอบที่จะให้การดูแลรักษาวัตถุเด็กในชั้นเรียนรูปแบบ ตัวอย่างเช่นถ้าฉันมีClassAและClassBกำหนดดังนี้ public class ClassA { public string MyProp { get; set; } public IEnumerable<ClassB> Children { get; } public void AddChild(ClassB newChild) { /*... */ } public void RemoveChild(ClassB child) { /* ... */ } } public class ClassB { public string SomeProp { get; …
16 c#  .net  poco 

6
ทำความเข้าใจกับคำหลักแบบคงที่
ฉันมีประสบการณ์ในการพัฒนากับ Java, Javascript และ PHP ฉันกำลังอ่าน Microsoft Visual C # 2010 ทีละขั้นตอนซึ่งฉันรู้สึกว่ามันเป็นหนังสือที่ดีมากในการแนะนำคุณกับภาษา C # ฉันดูเหมือนจะมีปัญหาในการทำความเข้าใจคำหลักคงที่ จากสิ่งที่ฉันเข้าใจในตอนนี้ถ้าคลาสถูกประกาศว่าสแตติกวิธีการและตัวแปรทั้งหมดต้องเป็นแบบสแตติก วิธีการหลักเสมอเป็นวิธีการคงที่ดังนั้นในชั้นเรียนที่วิธีการหลักที่มีอยู่ตัวแปรและวิธีการทั้งหมดจะประกาศคงที่ถ้าคุณต้องเรียกพวกเขาในวิธีการหลัก นอกจากนี้ฉันได้สังเกตเห็นว่าในการเรียกวิธีการคงที่จากคลาสอื่นคุณไม่จำเป็นต้องสร้างวัตถุที่คุณสามารถใช้ชื่อคลาส แต่วัตถุประสงค์ที่แท้จริงของคำหลักคงที่คืออะไร เมื่อใดที่ฉันควรประกาศตัวแปรคงที่และวิธีการ?

5
ผ่านวัตถุสองครั้งเพื่อวิธีเดียวกันหรือรวมกับส่วนต่อประสานที่รวมกัน?
ฉันมีวิธีที่สร้างไฟล์ข้อมูลหลังจากคุยกับกระดานดิจิตอล: CreateDataFile(IFileAccess boardFileAccess, IMeasurer boardMeasurer) ที่นี่boardFileAccessและboardMeasurerเป็นเช่นเดียวกันของBoardวัตถุว่าการดำเนินการทั้งในและIFileAccess ใช้ในกรณีนี้สำหรับวิธีการเดียวที่จะตั้งหนึ่งพินบนกระดานเพื่อให้การวัดง่าย ข้อมูลที่ได้จากการวัดนี้จะถูกเก็บไว้แล้วไว้บนกระดานโดยใช้ ตั้งอยู่ในโครงการแยกต่างหากIMeasurerIMeasurerIFileAccessBoard ฉันมาถึงข้อสรุปที่CreateDataFileทำสิ่งหนึ่งโดยทำการวัดอย่างรวดเร็วแล้วเก็บข้อมูลและการทำทั้งสองอย่างในวิธีเดียวกันนั้นง่ายกว่าสำหรับคนอื่นที่ใช้รหัสนี้จากนั้นจึงต้องทำการวัดและเขียนไฟล์ เป็นการเรียกเมธอดแยกต่างหาก สำหรับฉันดูเหมือนว่าไม่เหมาะสมที่จะส่งวัตถุเดียวกันไปยังวิธีการสองครั้ง ฉันได้พิจารณาการทำอินเตอร์เฟซในท้องถิ่นIDataFileCreatorที่จะขยายIFileAccessและIMeasurerแล้วมีการดำเนินการที่มีBoardอินสแตนซ์ที่เพิ่งจะโทรที่จำเป็นต้องใช้Boardวิธีการ พิจารณาว่าวัตถุบอร์ดเดียวกันจะใช้สำหรับการวัดและการเขียนไฟล์เสมอหรือไม่มันเป็นวิธีที่ไม่ถูกต้องหรือไม่ที่จะส่งวัตถุเดียวกันไปยังวิธีการสองครั้ง? ถ้าเป็นเช่นนั้นใช้อินเทอร์เฟซท้องถิ่นและการใช้งานโซลูชันที่เหมาะสมหรือไม่

4
size_t หรือ int สำหรับส่วนข้อมูลดัชนี ฯลฯ
ใน C ++, size_t(หรืออย่างถูกต้องมากขึ้นT::size_typeซึ่งเป็น "มักจะ" size_t; เช่นunsignedประเภท) จะใช้เป็นค่าตอบแทนสำหรับsize()อาร์กิวเมนต์เพื่อoperator[]ฯลฯ (ดูstd::vector, et. al.) ในทางตรงกันข้ามภาษา. NET ใช้int(และเลือกlong) เพื่อจุดประสงค์เดียวกัน ในความเป็นจริงที่สอดคล้องกับ CLS ภาษาไม่จำเป็นต้องสนับสนุนประเภทที่ไม่ได้ลงชื่อ เนื่องจาก. NET นั้นใหม่กว่า C ++ มีบางสิ่งที่บอกฉันว่าอาจมีปัญหาในการใช้งานunsigned intแม้กระทั่งสิ่งที่ "ไม่สามารถ" เป็นลบได้เช่นดัชนีอาร์เรย์หรือความยาว C ++ เป็น "วัตถุทางประวัติศาสตร์" สำหรับความเข้ากันได้แบบย้อนหลังหรือไม่? หรือมีการแลกเปลี่ยนการออกแบบที่แท้จริงและสำคัญระหว่างสองแนวทาง เหตุใดเรื่องนี้ อืม ... ฉันควรใช้อะไรกับคลาสหลายมิติใหม่ใน C ++; size_tหรือint? struct Foo final // e.g., image, matrix, etc. { typedef …
15 c#  c++  array 

3
ข้อแตกต่างระหว่าง ref และ out ใน runtime คืออะไร?
C # จัดให้มีrefและoutคำหลักเพื่อสร้างอาร์กิวเมนต์ที่จะส่งผ่านโดยการอ้างอิง ความหมายของทั้งสองนั้นคล้ายกันมาก ข้อแตกต่างเพียงอย่างเดียวคือการเริ่มต้นของตัวแปร flaged: refต้องการตัวแปรที่จะเริ่มต้นก่อนที่จะส่งผ่านไปยังฟังก์ชั่นoutไม่ได้ outต้องการตัวแปรที่จะเริ่มต้นภายในฟังก์ชั่นrefไม่ได้ กรณีการใช้งานของคำหลักสองคำนี้ก็เกือบจะเหมือนกันและการใช้งานที่บ่อยเกินไปของพวกเขาคือฉันเชื่อว่ามีกลิ่นรหัส (แม้ว่าจะมีกรณีการใช้ที่ถูกต้องเช่นTryParseและTryGetValueรูปแบบ) ด้วยเหตุนี้ใครบางคนสามารถอธิบายได้ว่าทำไมมีเครื่องมือสองอย่างที่คล้ายกันมากใน C # สำหรับกรณีการใช้งานที่แคบมาก? นอกจากนี้ในMSDNมีการระบุว่าพวกเขามีพฤติกรรมการใช้งานที่แตกต่างกัน: แม้ว่าคีย์เวิร์ด ref และ out จะทำให้เกิดพฤติกรรมรันไทม์ที่แตกต่างกัน แต่ก็ไม่ได้พิจารณาว่าเป็นส่วนหนึ่งของลายเซ็นเมธอดในเวลารวบรวม พฤติกรรมรันไทม์ของพวกเขาแตกต่างกันอย่างไร ข้อสรุป คำตอบทั้งสองนั้นดูถูกต้องขอบคุณทั้งคู่ ฉันยอมรับjmorenoเพราะชัดเจนกว่า

3
ฉันได้รับการฉีดพึ่งพา แต่บางคนสามารถช่วยฉันเข้าใจความต้องการคอนเทนเนอร์ IoC ได้หรือไม่
ฉันขอโทษถ้าสิ่งนี้ดูเหมือนจะเป็นคำถามที่เกิดขึ้นซ้ำแล้วซ้ำอีก แต่ทุกครั้งที่ฉันพบบทความเกี่ยวกับหัวข้อนั้นส่วนใหญ่จะพูดถึงว่า DI คืออะไร ดังนั้นฉันได้รับ DI แต่ฉันพยายามที่จะเข้าใจความต้องการภาชนะ IoC ซึ่งทุกคนดูเหมือนว่าจะเข้ามา จุดประสงค์ของคอนเทนเนอร์ IoC จริง ๆ แล้วเป็นเพียง "การแก้ไขอัตโนมัติ" การใช้งานที่เป็นรูปธรรมของการพึ่งพาหรือไม่ บางทีชั้นเรียนของฉันมีแนวโน้มที่จะไม่ได้ขึ้นต่อกันหลายครั้งและนั่นอาจเป็นเหตุผลว่าทำไมฉันไม่เห็นเรื่องใหญ่ แต่ฉันต้องการให้แน่ใจว่าฉันเข้าใจถึงประโยชน์ของภาชนะอย่างถูกต้อง โดยทั่วไปแล้วฉันแบ่งตรรกะทางธุรกิจของฉันออกเป็นคลาสที่อาจมีลักษณะเช่นนี้: public class SomeBusinessOperation { private readonly IDataRepository _repository; public SomeBusinessOperation(IDataRespository repository = null) { _repository = repository ?? new ConcreteRepository(); } public SomeType Run(SomeRequestType request) { // do work... var results …

2
นี่เป็นโครงสร้างโซลูชัน Visual Studio ที่ดีสำหรับการออกแบบโดเมนขับเคลื่อนบริการเว็บสงบหรือไม่?
ฉันกำลังสร้าง. NET 4.5 C # Web API RESTful solution และฉันต้องการให้ใครบางคนบอกฉันว่าโซลูชันโครงการของฉันนั้นถูกต้องและ / หรือฉลาด (- เพียงพอหรือยัง) สำหรับโซลูชั่นที่ออกแบบโดยใช้ Domain Driven Design โปรด โซลูชันได้แบ่งออกเป็น 6 โครงการ: /ฐาน (ไม่ได้อ้างอิงอะไรเลย) โครงการเว็บและสร้างส่วนต่อประสานระหว่างโซลูชันกับโลกภายนอก มีตัวควบคุม Web API ไม่มีเหตุผลใดเลยในการรวบรวมค่าจากวัตถุที่ร้องขอและขอให้ BizApi ทำงานได้ /Biz.Api (อ้างอิงโดยฐาน]) ให้บริการโดเมนและอนุญาตให้ / โครงการอินเทอร์เฟซฐานสามารถเข้าถึงวัตถุตรรกะทางธุรกิจของโดเมนในโครงการ /Biz.Domain /Biz.Domain (อ้างอิงโดย Biz.Api) จัดเตรียมคลาสโดเมนสำหรับเลเยอร์ Biz.Api เหล่านี้มีวิธีการจัดการข้อมูลของธุรกิจในหน่วยความจำ /Dal.Db (อ้างอิงโดย Biz.Api) เลเยอร์ที่เก็บฐานข้อมูล เข้าถึงฐานข้อมูลและแมปข้อมูลที่ส่งคืนไปยัง DTO ภายในที่กำหนดในเลเยอร์ …

5
ฉันสามารถใช้ Dependency Injection โดยไม่ทำลาย Encapsulation ได้ไหม
นี่คือโซลูชันและโครงการของฉัน: ร้านหนังสือ (โซลูชัน) BookStore.Coupler (โครงการ) Bootstrapper.cs BookStore.Domain (โครงการ) CreateBookCommandValidator.cs CompositeValidator.cs IValidate.cs IValidator.cs ICommandHandler.cs BookStore.Infrastructure (โครงการ) CreateBookCommandHandler.cs ValidationCommandHandlerDecorator.cs BookStore.Web (โครงการ) Global.asax BookStore.BatchProcesses (โครงการ) Program.cs Bootstrapper.cs : public static class Bootstrapper.cs { // I'm using SimpleInjector as my DI Container public static void Initialize(Container container) { container.RegisterManyForOpenGeneric(typeof(ICommandHandler<>), typeof(CreateBookCommandHandler).Assembly); container.RegisterDecorator(typeof(ICommandHandler<>), typeof(ValidationCommandHandlerDecorator<>)); container.RegisterManyForOpenGeneric(typeof(IValidate<>), AccessibilityOption.PublicTypesOnly, …

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