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

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

1
การสร้างพารามิเตอร์วัตถุใน {}?
ฉันกำลังพยายามถอดรหัสรหัสจากหนังสือ: List<Person> people = new List<Person>() { new Person {FirstName="Homer",LastName="Simpson",Age=47}, new Person {FirstName="Marge",LastName="Simpson",Age=45} }; บุคคลเป็นเพียงคลาสง่ายๆที่พวกเขาสร้างขึ้นโดยมีฟิลด์มากมาย: ชื่อนามสกุล ฯลฯ ... สิ่งที่ฉันไม่เข้าใจคือเราไม่ส่งพารามิเตอร์ไปที่นวกรรมิกของบุคคลในวงเล็บปีกกาใช่ไหม ฉันลองทำซ้ำรหัสนี้ แต่ดูเหมือนว่าจะไม่บินผู้ใด? ขอบคุณสำหรับการป้อนข้อมูล
15 c# 

6
ความแตกต่างระหว่าง“ String” และ“ string” ใน. NET และไหนดีที่สุด?
ใน. NET Framework อย่างน้อยในภาษา C # เรามีชนิดสตริง "รุ่น" สองอัน: "สตริง" "สตริง" ดูเหมือนว่าพวกเขาจะใช้แทนกันได้ แต่พวกเขาจริงเหรอ? หากพวกเขาไม่สามารถใช้แทนกันได้จะดีกว่าหรือไม่หากใช้แทนกันและดีกว่า
15 c#  .net 

7
วิธีที่ดีที่สุดในการสร้าง HTML ในรหัส C # คืออะไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันมีความเชื่อว่ามาร์กอัปควรอยู่ในสถานะมาร์กอัปและไม่อยู่ในโค้ดด้านหลัง ฉันมาถึงสถานการณ์ที่ฉันคิดว่าเป็นที่ยอมรับในการสร้าง HTML ในโค้ดด้านหลัง ฉันต้องการได้รับฉันทามติว่าแนวทางปฏิบัติที่ดีที่สุดควรเป็นอย่างไร เมื่อใดจึงจะสามารถสร้าง html ในโค้ดด้านหลังได้ วิธีที่ดีที่สุดในการสร้าง html นี้คืออะไร (ตัวอย่าง: สตริง, StringBuilder, HTMLWriter เป็นต้น)
15 c#  asp.net  html 

7
สิ่งที่ฉันควรรวมไว้ในส่วนหัวของเอกสารประกอบการเรียน
ฉันกำลังมองหารูปแบบเอกสารข้อมูลระดับสำหรับ Entity, Business Logic และคลาส Data Access ของฉัน ฉันพบรูปแบบสองรูปแบบจากที่นี่ รูปแบบ 1 ///----------------------------------------------------------------- /// Namespace: <Class Namespace> /// Class: <Class Name> /// Description: <Description> /// Author: <Author> Date: <DateTime> /// Notes: <Notes> /// Revision History: /// Name: Date: Description: ///----------------------------------------------------------------- รูปแบบ 2 // =============================== // AUTHOR : // CREATE DATE : …

4
แนวปฏิบัติที่เหมาะสมที่สุดเกี่ยวกับการแมปประเภทและวิธีการขยาย
ฉันต้องการถามคำถามเกี่ยวกับแนวทางปฏิบัติที่ดีที่สุดเกี่ยวกับประเภทการแมปและใช้วิธีการขยายใน C # ฉันรู้ว่าหัวข้อนี้มีการพูดคุยกันหลายครั้งในช่วงไม่กี่ปีที่ผ่านมา แต่ฉันได้อ่านบทความจำนวนมากและยังมีข้อสงสัย ปัญหาที่ฉันพบคือการขยายคลาสที่ฉันเป็นเจ้าของด้วยฟังก์ชัน "แปลง" สมมติว่าฉันมีคลาส "บุคคล" ที่แสดงถึงวัตถุซึ่งจะถูกใช้โดยตรรกะบางอย่าง ฉันยังมีคลาส "ลูกค้า" ที่แสดงการตอบสนองจาก API ภายนอก (จริง ๆ แล้วจะมีมากกว่าหนึ่ง API ดังนั้นฉันต้องแมปการตอบสนองของ API แต่ละประเภททั่วไป: คน) ฉันสามารถเข้าถึงซอร์สโค้ดของทั้งชั้นเรียนและในทางทฤษฎีสามารถใช้วิธีการของตัวเองที่นั่น ฉันต้องการแปลงลูกค้าเป็นบุคคลเพื่อให้ฉันสามารถบันทึกลงในฐานข้อมูล โครงการไม่ได้ใช้ผู้ทำแผนที่อัตโนมัติใด ๆ ฉันมีวิธีแก้ปัญหาที่เป็นไปได้ 4 ประการ: .ToPerson () วิธีการในระดับผู้บริโภค มันเรียบง่าย แต่ดูเหมือนว่าจะแบ่งรูปแบบความรับผิดชอบเดียวให้ฉันโดยเฉพาะอย่างยิ่งระดับ Consumer ถูกแมปกับคลาสอื่น ๆ (บางอันต้องการโดย API ภายนอกอื่น) ด้วยดังนั้นจึงต้องมีวิธีการทำแผนที่หลายวิธี การสร้างคอนสตรัคในคลาสบุคคลรับ Consumer เป็นอาร์กิวเมนต์ ง่ายและดูเหมือนว่าจะทำลายรูปแบบความรับผิดชอบเดียว ฉันต้องมีตัวสร้างการแมปหลายตัว (เนื่องจากจะมีคลาสจาก API อื่นให้ข้อมูลเดียวกับผู้บริโภค …

5
วิธีที่มีประสิทธิภาพที่สุดในการแบ่งปันรหัสระหว่างแอปพลิเคชัน. NET คืออะไร
ในงานของเราเรามีแอปพลิเคชั่น. net ที่แตกต่างกันมากมายซึ่งมีฟังก์ชั่นพื้นฐานมากมาย เราได้สร้างแอปพลิเคชันเหล่านี้โดยใช้สถาปัตยกรรมระดับ n ที่สะอาด แต่เราได้พบกับช่วงเวลาที่เราตระหนักว่าเราได้ใช้ฟังก์ชั่นเดิมซ้ำหลายครั้ง เห็นได้ชัดว่านี่เป็นการละเมิด DRY และเราต้องการแก้ไขให้ถูกต้อง เรากำลังใช้ Nuget เพื่อความสำเร็จสำหรับรหัสกาวทั่วไป (เดินสาย IoC บันทึกการตั้งค่า) แต่เราต้องการแบ่งปันข้อมูลและชั้นธุรกิจระหว่างแอปพลิเคชันทั้งหมดของเรา แนวคิดก็คือ UI จะจัดการกับส่วนต่างๆของชั้นธุรกิจที่ต้องการจริงๆเท่านั้น สิ่งนี้ดูเหมือนว่าจะเป็นปัญหาตรงไปตรงมาในตอนแรก แต่การพัฒนาอย่างต่อเนื่องอาจทำให้เกิดข้อผิดพลาดบางอย่างและเราไม่แน่ใจว่าจะดำเนินการอย่างไร สมมติว่าเราสร้างหนึ่งชั้นธุรกิจของเราเพื่อปกครองพวกเขาทั้งหมด ฉันจะเรียกมันว่า "รากฐาน" เราแจ้งแอปพลิเคชันของเราเพื่อใช้งานมูลนิธิและทุกอย่างก็ยอดเยี่ยมมาก รากฐานถูกแจกจ่ายไปยังเลเยอร์ UI แบบแสงผ่านทาง nuget และเราดูดี แต่แล้วเราก็เริ่มเพิ่มคุณสมบัติให้กับแอปพลิเคชันของเราและเราประสบปัญหา สมมติว่าเรากำลังทำงานในโครงการ A และเราเพิ่มคุณสมบัติใหม่ที่ต้องมีการเปลี่ยนแปลงในมูลนิธิ เราทำการเปลี่ยนแปลงรากฐาน (Foundation-A) และผลักดันพวกเขาออกไปยังฟีด nuget เป็นแพ็กเกจที่ไม่เสถียร Project A ได้รับแพ็คเกจ nuget ล่าสุดและทั้งหมดนั้นดี ในขณะเดียวกันผู้พัฒนารายอื่นกำลังทำงานในโครงการ B. เขาได้รับพื้นฐานล่าสุดจากการควบคุมแหล่ง แต่นำมาจากสาขาที่มีเสถียรภาพดังนั้นจึงไม่มีการเปลี่ยนแปลงโครงการ A …

2
ฉันจะป้องกันไม่ให้ไฟล์เอ็กซีคิวต์ของฉันทำงานไม่ถูกต้องหรือไวรัสได้อย่างไร?
ฉันกำลังสร้างซอฟต์แวร์ชิ้นหนึ่งซึ่งจะทำงานบน windows และจะทำหน้าที่เหมือนตัวเรียกใช้สำหรับเกมเพื่อใช้เป็นตัวอัปเดตอัตโนมัติและตัวตรวจสอบไฟล์ในพีซีฝั่งไคลเอ็นต์ สิ่งหนึ่งที่ฉันไม่เข้าใจว่าทำไมซอฟต์แวร์ป้องกันไวรัสของฉัน (Avast) กำลังพิจารณาว่าไฟล์ exe ของฉันเป็นสิ่งที่อันตรายและจะไม่เริ่มต้นโดยไม่ขอให้ใส่ลงในแซนด์บ็อกซ์เพื่อการใช้งานอย่างปลอดภัย มีกฎใดบ้างที่ซอฟต์แวร์ของฉันควรปฏิบัติตามได้รับการปฏิบัติที่ดีหรือฉันควรจ่ายเงินหลายร้อยดอลลาร์สำหรับการเซ็นชื่อแบบดิจิทัลและสิ่งอื่น ๆ ฉันใช้ C # กับ MS Visual Studio 2010 รายงาน VirusTotal ไม่มีการฉีด DLL ทำงานเป็นเครื่องมือดาวน์โหลดไฟล์ระยะไกลโดยใช้คลาส WebClient () มันไม่เหมือนที่มันเตือนเกี่ยวกับไวรัส แต่มัน "แนะนำ" เพื่อ sandbox มัน ดูภาพหน้าจอ:

4
ฉันจะค้นหาสถานที่สำคัญทั้งหมดภายในขอบเขตของสถานที่สำคัญได้อย่างมีประสิทธิภาพได้อย่างไร
ฉันกำลังพยายามเริ่มต้นด้วยโครงการค้นหาทางภูมิศาสตร์ที่จะพบสถานที่สำคัญทั้งหมดในระยะ 10 กม. / ไมล์ (ไม่สำคัญสำหรับเรื่องนี้) ของจุดสังเกตเฉพาะ ตัวอย่างเช่นสมมุติว่าฉันมีฐานข้อมูลของสถานที่สำคัญ 1,000,000 แห่ง เพื่อหาจุดสังเกตทั้งหมดในช่วง 10 ไมล์ของจุดสังเกตที่มีพิกัดบางอย่างฉันจะต้องคำนวณระยะทางระหว่างจุดสังเกตจากการค้นหาของฉันกับจุดสังเกต 1,000,000 จุด มีวิธีที่ดีกว่าในการทำเช่นนั้น? ทางเลือกที่ฉันคิดคือจัดหมวดหมู่สถานที่สำคัญเช่นประเทศภูมิภาคเมืองย่านธุรกิจประวัติศาสตร์ ฯลฯ ในลักษณะที่ธุรกิจสามารถเป็นส่วนหนึ่งของพื้นที่ใกล้เคียงหรือเมือง เมืองเป็นส่วนหนึ่งของภูมิภาคประเทศ ฯลฯ สิ่งนี้สามารถทำให้รายการการคำนวณแคบลง แต่มันก็ดูเหมือนว่าจะมีหลายงานที่ต้องทำเพื่อให้การค้นหารวดเร็วและแม่นยำ Google Maps API ช่วยได้ไหม

7
ดั้งเดิมเทียบกับคลาสเพื่อแสดงวัตถุโดเมนอย่างง่าย
อะไรคือแนวทางทั่วไปหรือกฎง่ายๆสำหรับเมื่อใช้วัตถุโดเมน speciifc เทียบกับสตริงหรือหมายเลขธรรมดา? ตัวอย่าง: อายุกับจำนวนเต็ม? ชั้น FirstName vs String? UniqueID vs String หมายเลขโทรศัพท์กับสตริงเทียบกับ Long หรือไม่ DomainName คลาส vs String? ฉันคิดว่าผู้ปฏิบัติงาน OOP ส่วนใหญ่จะพูดคลาสที่เฉพาะเจาะจงสำหรับ PhoneNumber และ DomainName กฎเพิ่มเติมเกี่ยวกับสิ่งที่ทำให้พวกเขาถูกต้องและวิธีการเปรียบเทียบทำให้ชั้นเรียนง่าย ๆ ง่ายขึ้นและปลอดภัยยิ่งขึ้นที่จะจัดการกับ แต่สำหรับสามคนแรกนั้นมีการถกเถียงกันมากขึ้น ฉันไม่เคยเจอคลาส "อายุ" แต่เราสามารถโต้แย้งได้ว่ามันสมเหตุสมผลเพราะมันต้องไม่ใช่ลบ (โอเคฉันรู้ว่าคุณสามารถโต้เถียงสำหรับวัยลบได้ แต่มันเป็นตัวอย่างที่ดีที่เกือบเทียบเท่ากับจำนวนเต็มดั้งเดิม) สตริงเป็นเรื่องปกติที่จะแสดง "ชื่อ" แต่มันไม่สมบูรณ์เพราะสตริงที่ว่างเปล่าเป็นสตริงที่ถูกต้อง แต่ไม่ใช่ชื่อที่ถูกต้อง การเปรียบเทียบมักจะทำโดยไม่สนใจขนาดตัวพิมพ์ แน่นอนว่ามีวิธีการตรวจสอบความว่างเปล่าทำการเปรียบเทียบแบบตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แต่จำเป็นต้องให้ผู้บริโภคทำเช่นนี้ คำตอบนั้นขึ้นอยู่กับสภาพแวดล้อมหรือไม่? ฉันเกี่ยวข้องกับซอฟต์แวร์องค์กร / ซอฟต์แวร์มูลค่าสูงที่จะมีชีวิตอยู่และได้รับการดูแลรักษาเป็นเวลานานกว่าทศวรรษ บางทีฉันอาจจะคิดมากเรื่องนี้ แต่ฉันอยากจะรู้ว่าถ้าใครมีกฎเกณฑ์ว่าเมื่อใดควรเลือกคลาสเทียบกับแบบดั้งเดิม

2
เหตุใดจึงต้องใช้วิธีการทั่วไปที่มีข้อ จำกัด ประเภทแทนที่จะเป็นชนิดของตัวเอง?
ในคำถาม StackExchange ที่แตกต่างกันฉันสังเกตเห็นคนที่ใช้ต้นแบบนี้: void DoSomething<T>(T arg) where T: SomeSpecificReferenceType { //Code.... } โปรดจำไว้ว่ามีข้อ จำกัด ประเภทเดียว ( SomeSpecificReferenceType) ข้อแตกต่างและความได้เปรียบของการเขียนแบบนี้คืออะไรแทนที่จะเป็นเพียง: void DoSomething(SomeSpecificReferenceType arg) { //Code.... } ในทั้งสองกรณีargจะต้องมีการตรวจสอบประเภทเวลาคอมไพล์ ในทั้งสองกรณีเนื้อความของวิธีการนั้นสามารถพึ่งพาความรู้ที่argเป็นของ (หรือเป็นผู้สืบทอด) ประเภทที่เฉพาะเจาะจงซึ่งรู้จักกันในเวลารวบรวม นี่เป็นกรณีของผู้พัฒนา overzealous การเรียนรู้เกี่ยวกับ generics ก่อนที่จะเรียนรู้เกี่ยวกับมรดกธรรมดาหรือไม่? หรือมีเหตุผลที่ถูกต้องว่าทำไมลายเซ็นวิธีการที่จะเขียนด้วยวิธีนี้?
14 c#  .net  generics 

2
ฉันควรใช้โอเปอเรเตอร์การแปลงประเภทโดยนัยของ C # เมื่อใด
ใน C # เราสามารถโอเวอร์โหลดตัวดำเนินการแปลงโดยนัยเช่นนี้ (ตัวอย่างจากMSDN ): struct Digit { /* ... */ public static implicit operator byte(Digit d) // implicit digit to byte conversion operator { /* ... */ } } ดังนั้นเราจึงสามารถมีประเภทเป็นประเภทค่าที่กำหนดเอง , น่าอัศจรรย์แปลงตัวเองไปอีก (ไม่เกี่ยวข้อง) ประเภทออกจากผู้ชมในความสับสน (จนกว่าพวกเขาจะมองเข้าไปหลังเวทีและเห็นผู้ประกอบการแปลงนัยที่มี) ฉันไม่ชอบปล่อยให้ใครก็ตามที่อ่านรหัสของฉันในความสับสน ฉันไม่คิดว่าหลายคนทำ คำถามคือกรณีใช้งานของโอเปอเรเตอร์การแปลงประเภทโดยนัยคืออะไรจะไม่ทำให้โค้ดของฉันเข้าใจยากขึ้น?
14 c#  operators 

4
อนุญาตให้ใช้งานส่วนติดต่ออย่างชัดเจนเพื่อซ่อนสมาชิกใน C # ได้หรือไม่
ฉันเข้าใจวิธีการทำงานกับอินเตอร์เฟสและการใช้อินเตอร์เฟสอย่างชัดเจนใน C # แต่ฉันสงสัยว่ามันถือว่าเป็นรูปแบบที่ไม่ดีเพื่อซ่อนสมาชิกบางคนที่ไม่ได้ใช้บ่อย ตัวอย่างเช่น: public interface IMyInterface { int SomeValue { get; set; } int AnotherValue { get; set; } bool SomeFlag { get; set; } event EventHandler SomeValueChanged; event EventHandler AnotherValueChanged; event EventHandler SomeFlagChanged; } ฉันรู้ล่วงหน้าว่ากิจกรรมในขณะที่มีประโยชน์จะไม่ค่อยได้ใช้ ดังนั้นฉันคิดว่ามันจะสมเหตุสมผลที่จะซ่อนพวกเขาออกจากชั้นเรียนการใช้งานผ่านการใช้งานอย่างชัดเจนเพื่อหลีกเลี่ยงความไม่เป็นระเบียบของ IntelliSense

2
เหตุใด C # จึงมีคุณสมบัติมากกว่า Java [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา โปรดทราบว่านี่ไม่ได้หมายถึงอาร์กิวเมนต์ของ Java vs. C # ฉันเป็นโปรแกรมเมอร์ Java ที่ไม่มีประสบการณ์แบบ C # ขอเพียงแค่ความอยากรู้อยากเห็น ฉันได้อ่านบน C # และดูเหมือนว่ามันมีคุณสมบัติมากกว่า Java ตัวอย่างจำนวนมาก: การอนุมานประเภท dynamic คำสำคัญ. ผู้ได้รับมอบหมาย พารามิเตอร์ทางเลือก แลมบ์ดาและ LINQ (ฉันไม่รู้จริงๆว่ามันคืออะไร) คุณสมบัติ. อย่างไรก็ตาม Java ไม่ได้มีคุณสมบัติอะไรที่ C # ไม่มี คำถามของฉันคือ: ทำไม C # ถึงมีฟีเจอร์เนทีฟมากกว่า Java? และทำไม Java ไม่ได้เพิ่มสิ่งเหล่านี้ตลอดทั้งปีเช่นคุณสมบัติหรือการอนุมานประเภท? นักออกแบบภาษาจาวาใช้แนวทางที่เรียบง่ายกว่านี้หรือไม่? อะไรคือสาเหตุของสิ่งนี้?
14 java  c#  languages 

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

4
รูปแบบการออกแบบสำหรับการนำเข้าข้อมูลของแหล่งข้อมูลประเภทต่าง ๆ และไปยังประเภทปลายทางต่างๆ
ฉันต้องออกแบบและสร้างสคริปต์นำเข้า (ใน C #) ที่สามารถจัดการต่อไปนี้: อ่านข้อมูลจากแหล่งต่าง ๆ (XML, XSLX, CSV) ตรวจสอบข้อมูล เขียนข้อมูลไปยังวัตถุประเภทต่าง ๆ (ลูกค้าที่อยู่) ข้อมูลจะมาจากแหล่งที่มาจำนวนหนึ่ง แต่แหล่งที่มาจะมีรูปแบบการนำเข้าหนึ่งรูปแบบเสมอ (เช่น csv, xml, xslx) รูปแบบการนำเข้าอาจแตกต่างกันไปตามแหล่งที่มา รูปแบบการนำเข้าใหม่อาจถูกเพิ่มในอนาคต ประเภทวัตถุปลายทางจะเหมือนกันเสมอ (ลูกค้าที่อยู่และอื่น ๆ ) ฉันกำลังคิดเกี่ยวกับการใช้ยาชื่อสามัญและฉันอ่านบางอย่างเกี่ยวกับรูปแบบของโรงงาน แต่ฉันเป็น noob ที่ค่อนข้างใหญ่ในพื้นที่นี้ รูปแบบการออกแบบที่เหมาะสมในการแก้ไขปัญหานี้คืออะไร

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