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

C # (ออกเสียงว่า "ดูคม") เป็นภาษาการเขียนโปรแกรมหลายกระบวนทัศน์ในระดับสูงพิมพ์แบบคงที่พัฒนาโดย Microsoft รหัส C # มักกำหนดเป้าหมายกลุ่มเครื่องมือ. NET ของ Microsoft และรันไทม์ซึ่งรวมถึง. NET Framework, .NET Core และ Xamarin เป็นต้น ใช้แท็กนี้สำหรับคำถามเกี่ยวกับโค้ดที่เขียนในข้อกำหนดทางการของ C # หรือ C #

7
ฉันสามารถใช้ตัวเริ่มต้นการรวบรวมสำหรับรายการพจนานุกรม <TKey, TValue> ได้หรือไม่
ฉันต้องการใช้ตัวเริ่มต้นการรวบรวมสำหรับรหัสบิตถัดไป: public Dictionary&lt;int, string&gt; GetNames() { Dictionary&lt;int, string&gt; names = new Dictionary&lt;int, string&gt;(); names.Add(1, "Adam"); names.Add(2, "Bart"); names.Add(3, "Charlie"); return names; } โดยทั่วไปแล้วควรเป็นดังนี้: return new Dictionary&lt;int, string&gt; { 1, "Adam", 2, "Bart" ... แต่ไวยากรณ์ที่ถูกต้องสำหรับสิ่งนี้คืออะไร?

30
คุณใช้เทมเพลตสด ReSharper 4+ อะไรสำหรับ C # [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม &amp; ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา คุณใช้เทมเพลต ReSharper 4.0 อะไรสำหรับC # มาแบ่งปันกันในรูปแบบต่อไปนี้: [หัวข้อ] คำอธิบายเพิ่มเติม ทางลัด:ทางลัด มีให้ใน: [AvailabilitySetting] // Resharper template code snippet // comes here คุณสมบัติมาโคร (ถ้ามี): Macro1 - ค่า - EditableOccurence Macro2 - ค่า - EditableOccurence โปรดหนึ่งมาโครต่อคำตอบ! ต่อไปนี้เป็นตัวอย่างบางส่วนสำหรับอุปกรณ์ทดสอบ NUnitและกรณีทดสอบ NUnit แบบสแตนด์อโลนที่อธิบายเทมเพลตสดในรูปแบบที่แนะนำ

9
วิธีตรวจสอบว่าวัตถุสามารถต่ออนุกรมได้ใน C # หรือไม่
ฉันกำลังมองหาวิธีง่ายๆในการตรวจสอบว่าวัตถุใน C # สามารถต่ออนุกรมกันได้หรือไม่ อย่างที่เราทราบกันดีว่าคุณสร้างออบเจ็กต์ที่สามารถทำให้เป็นอนุกรมได้โดยการใช้อินเทอร์เฟซISerializableหรือโดยการวาง[Serializable]ที่ด้านบนสุดของคลาส สิ่งที่ฉันกำลังมองหาคือวิธีที่รวดเร็วในการตรวจสอบสิ่งนี้โดยไม่ต้องสะท้อนถึงคลาสเพื่อให้ได้แอตทริบิวต์ อินเทอร์เฟซจะรวดเร็วโดยใช้คำสั่งis ใช้คำแนะนำของ @ Flard นี่คือรหัสที่ฉันคิดขึ้นมาว่ามีวิธีที่ดีกว่านี้ private static bool IsSerializable(T obj) { return ((obj is ISerializable) || (Attribute.IsDefined(typeof (T), typeof (SerializableAttribute)))); } หรือดีกว่าเพียงแค่รับประเภทของวัตถุจากนั้นใช้คุณสมบัติ IsSerializable กับประเภท: typeof(T).IsSerializable โปรดจำไว้ว่าสิ่งนี้ดูเหมือนจะเป็นเพียงคลาสที่เรากำลังจัดการอยู่หากคลาสนั้นมีคลาสอื่น ๆ ที่คุณอาจต้องการตรวจสอบทั้งหมดหรือลองจัดลำดับและรอข้อผิดพลาดตามที่ @pb ชี้ไว้
94 c#  serialization 

12
ค่าใช้จ่ายที่แท้จริงของการลอง / จับใน C # คืออะไร?
ดังนั้นฉันรู้ว่า try / catch เพิ่มค่าใช้จ่ายบางส่วนดังนั้นจึงไม่ใช่วิธีที่ดีในการควบคุมโฟลว์กระบวนการ แต่ค่าใช้จ่ายนี้มาจากไหนและผลกระทบที่แท้จริงคืออะไร

7
โปรแกรมเมอร์ควรใช้ SSIS หรือไม่และถ้าเป็นเช่นนั้นเพราะเหตุใด [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม &amp; ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ในฐานะนักพัฒนา. NET ฉันควรชอบแพ็คเกจ SSIS มากกว่าการเขียนโค้ดด้วยเหตุผลใด เรามีตันของแพคเกจในการผลิตที่ฉันกำลังทำงานและพวกเขากำลังฝันร้ายทั้ง "เขียน" (บางทีวาด?) และการบำรุงรักษา แต่ละแพคเกจดูเหมือนชามสปาเก็ตตี้หลากสีที่มีสคริปต์ C # และ VB.NET ผสมกันในจุดที่นามธรรมพังทลาย หากต้องการทราบว่า "Execute SQL Task" หรือ "Foreach Loop" ทำอะไรบ้างฉันต้องดับเบิลคลิกที่สิ่งที่ถูกสาปและเรียกดูโครงสร้างของค่าและนิพจน์ตามตัวอักษรซึ่งกระจัดกระจายไปตามแท็บต่างๆ ฉันเปิดใจจึงอยากทราบว่านักพัฒนาที่ดีคนอื่น ๆพบว่า SSIS มีประสิทธิผลมากกว่าการเขียนโค้ดหรือไม่ หากคุณพบว่า SSIS มีประสิทธิผลมากขึ้นโปรดบอกฉันว่าทำไม
94 c#  .net  sql-server  ssis 

13
tuple ออกแบบมาเพื่อแก้ข้อกำหนดอะไร
ฉันกำลังดูคุณสมบัติ C # ใหม่ของสิ่งทู ฉันอยากรู้ว่าทูเพิลออกแบบมาเพื่อแก้ปัญหาอะไร คุณใช้ tuples ทำอะไรในแอพของคุณ? อัปเดต ขอบคุณสำหรับคำตอบที่ผ่านมาให้ฉันดูว่าฉันมีสิ่งที่ตรงใจ ตัวอย่างที่ดีของทูเปิลถูกชี้ให้เห็นเป็นพิกัด หน้าตาแบบนี้ใช่ไหม var coords = Tuple.Create(geoLat,geoLong); จากนั้นใช้ทูเพิลดังนี้: var myLatlng = new google.maps.LatLng("+ coords.Item1 + ", "+ coords.Item2 + "); ถูกต้องหรือไม่
94 c#  tuples 

4
เหตุใดการยืนยันนี้จึงทำให้เกิดข้อยกเว้นของรูปแบบเมื่อเปรียบเทียบโครงสร้าง
ฉันพยายามยืนยันความเท่าเทียมกันของสองSystem.Drawing.Sizeโครงสร้างและฉันได้รับข้อยกเว้นของรูปแบบแทนการยืนยันความล้มเหลวที่คาดไว้ [TestMethod] public void AssertStructs() { var struct1 = new Size(0, 0); var struct2 = new Size(1, 1); //This throws a format exception, "System.FormatException: Input string was not in a correct format." Assert.AreEqual(struct1, struct2, "Failed. Expected {0}, actually it is {1}", struct1, struct2); //This assert fails properly, "Failed. Expected {Width=0, …

8
GetType () โกหกได้ไหม?
จากคำถามต่อไปนี้ที่ถามเมื่อไม่กี่วันที่ผ่านมาใน SO: GetType () และความหลากหลายและอ่านคำตอบของ Eric Lippertฉันเริ่มคิดว่าถ้าทำให้GetType()ไม่เสมือนจริงทำให้มั่นใจได้ว่าวัตถุไม่สามารถโกหกTypeได้ โดยเฉพาะคำตอบของ Eric ระบุสิ่งต่อไปนี้: นักออกแบบเฟรมเวิร์กจะไม่เพิ่มคุณสมบัติที่อันตรายอย่างเหลือเชื่อเช่นการปล่อยให้วัตถุโกหกเกี่ยวกับประเภทของมันเพียงเพื่อให้มันสอดคล้องกับวิธีการอื่น ๆ อีกสามวิธีในประเภทเดียวกัน ตอนนี้คำถามคือ: ฉันสามารถทำให้วัตถุที่ไม่โกหกเกี่ยวกับประเภทของมันโดยไม่ได้รับที่ชัดเจนได้ทันทีหรือไม่ ฉันอาจจะคิดผิดอย่างสุดซึ้งที่นี่และฉันชอบที่จะชี้แจงหากเป็นเช่นนั้น แต่ให้พิจารณารหัสต่อไปนี้: public interface IFoo { Type GetType(); } และการใช้งานอินเทอร์เฟซดังกล่าวสองรายการต่อไปนี้: public class BadFoo : IFoo { Type IFoo.GetType() { return typeof(int); } } public class NiceFoo : IFoo { } จากนั้นถ้าคุณเรียกใช้โปรแกรมง่ายๆต่อไปนี้: static void Main(string[] args) …
94 c#  types 

3
แนวทางปฏิบัติที่ดีที่สุดในการสร้างแอปพลิเคชันหลายภาษาใน C # / WinForms? [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม &amp; ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันกำลังมองหาการสร้างแอปพลิเคชันที่เหมาะสมกับหลายภาษาใน C # เนื่องจากฉันต้องทำงานในโครงการขนาดเล็กซึ่งเป็นกรณีนี้ ฉันพบโดยทั่วไปสองวิธีในการทำสิ่งนี้: ตั้งค่าคุณสมบัติที่สามารถแปลเป็นภาษาท้องถิ่นได้ของแบบฟอร์มเป็นจริงตั้งค่าคุณสมบัติภาษากรอกป้ายกำกับทั้งหมดและคุณ 'เสร็จสิ้น' ข้อเสียเปรียบหลักที่ฉันเห็นในสิ่งนี้คือวิธีสร้างสิ่งอื่น ๆ ที่ไม่ได้เป็นส่วนหนึ่งของแบบฟอร์มที่พร้อมสำหรับหลายภาษา (เช่นหน้าต่างป๊อปอัปไฟล์บันทึกหรือหน้าต่าง ฯลฯ ) สร้างไฟล์ทรัพยากรตัวอย่างเช่น 'Lang.en-us.resx' และอีกไฟล์หนึ่งสำหรับทุกภาษาเช่น 'Lang.nl-nl.resx' และเติมด้วย Strings ดูเหมือนว่า IDE จะสร้างคลาสให้ฉันโดยอัตโนมัติดังนั้นในโค้ดฉันสามารถใช้ Lang.SomeText ได้ ข้อเสียเปรียบที่ใหญ่ที่สุดที่ฉันเห็นในสิ่งนี้คือสำหรับทุกรูปแบบฉันต้องตั้งค่าป้ายกำกับและคำอธิบายภาพอื่น ๆ ทั้งหมดด้วยตัวเองในโค้ด (และดูเหมือนว่าการผูกข้อมูลจะใช้กับทรัพยากรเหล่านี้ไม่ได้) อย่างไรก็ตามฉันแน่ใจว่ามีวิธีอื่นในการทำเช่นนี้เช่นกัน แนวทางปฏิบัติที่ดีที่สุดคืออะไร? อะไรที่ง่ายที่สุดสำหรับแอปพลิเคชันขนาดเล็ก (ไม่กี่รูปแบบการเชื่อมต่อฐานข้อมูล ฯลฯ ) และแบบใดที่เหมาะกับแอปพลิเคชันขนาดใหญ่ที่สุด

5
Linq Query ยังคงโยน“ ไม่สามารถสร้างค่าคงที่ของประเภท System.Object …” ทำไม?
ต่อไปนี้เป็นตัวอย่างโค้ด: private void loadCustomer(int custIdToQuery) { var dbContext = new SampleDB(); try { var customerContext = from t in dbContext.tblCustomers // keeps throwing: where t.CustID.Equals(custIdToQuery) // Unable to create a constant value of type 'System.Object'. select new // Only primitive types ('such as Int32, String, and Guid') { // are …

9
Windows GUI: WPF หรือ WinRT (2015+)
ฉันพยายามหาภาพรวมของเทคโนโลยีต่างๆเพื่อใช้ในการสร้าง GUI ใน Windows World สำหรับบริบทฉันกำลังสร้างเกมแบบผู้เล่นหลายคนบนแพลตฟอร์ม 2d เล็กน้อย (เพียงเพื่อการเรียนรู้ .. ) ครูของฉันบอกว่าเขาคิดว่า WPF เป็นวิธีที่ถูกต้อง แต่ดูเหมือนว่าเขาจะเปรียบเทียบกับ Windows Forms เท่านั้น การพูดน้อยของฉันคือที่นี่ในปี 2015 Windows Forms ตายไปแล้ว? ในคำถามซ้อนทับอื่น ๆ พวกเขากล่าวว่า WinRT + XAML ใช้สำหรับการสร้าง Metro GUI (สิ่งที่เป็นหน้าต่าง 8 กระเบื้อง!) และดูเหมือนว่า WPF เป็นสิ่งที่ใช้สำหรับเดสก์ท็อปใน Window 7/8 เท่านั้นและใกล้เคียงกับ Silverlight Windows 8 Runtime (WinRT / Windows Store apps …

6
เพิ่มคำอธิบายประกอบข้อมูลไปยังคลาสที่สร้างโดยกรอบงานเอนทิตี
ฉันมีคลาสต่อไปนี้ที่สร้างโดยเอนทิตีเฟรมเวิร์ก: public partial class ItemRequest { public int RequestId { get; set; } //... ฉันต้องการกำหนดให้เป็นฟิลด์บังคับ [Required] public int RequestId { get;set; } อย่างไรก็ตามเนื่องจากรหัสนี้ถูกสร้างขึ้นสิ่งนี้จะถูกลบออก ฉันนึกไม่ออกว่าจะสร้างคลาสบางส่วนได้อย่างไรเนื่องจากคุณสมบัติถูกกำหนดโดยคลาสบางส่วนที่สร้างขึ้น ฉันจะกำหนดข้อ จำกัด อย่างปลอดภัยได้อย่างไร?

1
HttpClient.GetAsync พร้อมข้อมูลรับรองเครือข่าย
ฉันกำลังใช้HttpWebRequestเพื่อรับเว็บไซต์ HttpWebRequestsฉันต้องการที่จะใช้รูปแบบการรอคอยซึ่งไม่ได้รับ ฉันพบชั้นเรียนHttpClientซึ่งดูเหมือนจะเป็นคลาส Http worker ใหม่ ฉันกำลังใช้HttpClient.GetAsync(...)เพื่อค้นหาหน้าเว็บของฉัน แต่ฉันหายไปเลือกที่จะเพิ่มเช่นClientCredentials HttpWebRequest.Credentialsมีวิธีใดในการให้HttpClientข้อมูลการรับรองความถูกต้องหรือไม่?

13
จะแยกวิเคราะห์ชื่อเดือน (สตริง) เป็นจำนวนเต็มเพื่อเปรียบเทียบใน C # ได้อย่างไร?
ฉันต้องสามารถเปรียบเทียบชื่อเดือนที่ฉันมีในอาร์เรย์ได้ คงจะดีไม่น้อยหากมีทางตรงเช่น: Month.toInt("January") &gt; Month.toInt("May") การค้นหา Google ของฉันดูเหมือนจะแนะนำวิธีเดียวคือการเขียนวิธีการของคุณเอง แต่ดูเหมือนว่าจะเป็นปัญหาทั่วไปที่ฉันคิดว่ามันจะถูกนำไปใช้แล้วใน. Net มีใครเคยทำมาก่อน
94 c#  parsing  integer  compare 

8
Debug.Assert vs Exception Throwing
ฉันได้อ่านบทความมากมาย (และคำถามที่คล้ายกันอีกสองสามข้อที่โพสต์บน StackOverflow) เกี่ยวกับวิธีการและเวลาที่จะใช้การยืนยันและฉันเข้าใจดี แต่ถึงกระนั้นฉันก็ไม่เข้าใจว่าแรงจูงใจแบบไหนที่ควรผลักดันให้ฉันใช้Debug.Assertแทนที่จะทิ้งข้อยกเว้นธรรมดา ๆ สิ่งที่ฉันหมายถึงคือใน. NET การตอบสนองเริ่มต้นสำหรับการยืนยันที่ล้มเหลวคือการ "หยุดโลก" และแสดงกล่องข้อความให้กับผู้ใช้ แม้ว่าพฤติกรรมแบบนี้จะสามารถแก้ไขได้ แต่ฉันพบว่ามันน่ารำคาญและซ้ำซ้อนมากที่จะทำเช่นนั้นในขณะที่ฉันทำได้เพียงแค่โยนข้อยกเว้นที่เหมาะสมแทน ด้วยวิธีนี้ฉันสามารถเขียนข้อผิดพลาดลงในบันทึกของแอปพลิเคชันได้อย่างง่ายดายก่อนที่จะโยนข้อยกเว้นและนอกจากนี้แอปพลิเคชันของฉันไม่จำเป็นต้องหยุดทำงาน เหตุใดฉันจึงควรใช้Debug.Assertแทนข้อยกเว้นธรรมดา การวางคำยืนยันในที่ที่ไม่ควรเป็นเพียงแค่อาจทำให้เกิด "พฤติกรรมที่ไม่ต้องการ" ได้ทุกรูปแบบดังนั้นในมุมมองของฉันฉันไม่ได้ประโยชน์อะไรเลยจากการใช้การยืนยันแทนที่จะโยนข้อยกเว้น คุณเห็นด้วยกับฉันหรือว่าฉันพลาดอะไรที่นี่? หมายเหตุ:ฉันเข้าใจอย่างถ่องแท้ว่าความแตกต่างคือ "ในทางทฤษฎี" (Debug vs Release, รูปแบบการใช้งานและอื่น ๆ ) แต่อย่างที่ฉันเห็นฉันจะดีกว่าที่จะทิ้งข้อยกเว้นแทนการยืนยัน เนื่องจากหากพบข้อบกพร่องในรุ่นที่ใช้งานจริงฉันก็ยังคงต้องการให้ "การยืนยัน" ล้มเหลว (อย่างไรก็ตาม "ค่าใช้จ่าย" มีขนาดเล็กมาก) ดังนั้นฉันจะดีกว่าที่จะทิ้งข้อยกเว้นแทน แก้ไข:วิธีที่ฉันเห็นหากการยืนยันล้มเหลวนั่นหมายความว่าแอปพลิเคชันเข้าสู่สถานะที่เสียหายและไม่คาดคิด เหตุใดฉันจึงต้องการดำเนินการต่อไป? ไม่สำคัญว่าแอปพลิเคชันจะทำงานบนเวอร์ชันดีบักหรือเวอร์ชันรีลีส เช่นเดียวกันสำหรับทั้งสองอย่าง

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