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

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

4
รับชื่อคอลัมน์ทั้งหมดของ DataTable ลงในสตริงอาร์เรย์โดยใช้ (LINQ / Predicate)
ฉันรู้ว่าเราสามารถทำได้อย่างง่ายดายโดยการวนซ้ำแบบธรรมดา แต่ฉันต้องการติดตาม LINQ / Predicate นี้หรือไม่ string[] columnNames = dt.Columns.? or string[] columnNames = from DataColumn dc in dt.Columns select dc.name;
109 c#  .net  linq  datatable 

18
การแก้ไขปัญหา BadImageFormatException
ฉันมีบริการ Windows ที่เขียนใน C # โดยใช้ Visual Studio 2010 และกำหนดเป้าหมายไปที่. NET Framework 4 แบบเต็มเมื่อฉันเรียกใช้จากการดีบักการสร้างบริการจะทำงานตามที่คาดไว้ อย่างไรก็ตามเมื่อฉันเรียกใช้จากรุ่น Release ฉันจะได้รับ System.BadImageFormatException (รายละเอียดด้านล่าง) ฉันค้นหาทางอินเทอร์เน็ตเพื่อหาวิธีแก้ปัญหา แต่จนถึงตอนนี้ทุกสิ่งที่ฉันพบก็ไม่ได้ช่วยฉันหาทางแก้ปัญหา ปัญหานี้เกิดขึ้นทั้งในระบบ Windows 7 64 บิต (dev) และ Windows XP SP3 32 บิต (เป้าหมาย) นี่คือสิ่งที่ฉันได้ลองทำแล้ว: การตั้งค่าการสร้างที่ได้รับการยืนยันเช่นเป้าหมายแพลตฟอร์มจะเหมือนกันทั้งหมด (x86) ใช้ peverify กับอ็อพชัน / verbose เพื่อให้แน่ใจว่าไบนารีแอสเซมบลีถูกต้อง ใช้ fuslogvw เพื่อค้นหาปัญหาในการโหลด ใช้ CheckAsm เพื่อค้นหาไฟล์หรือชุดประกอบที่หายไป การตรวจสอบทั้งหมดนี้ไม่ได้เปลี่ยนแปลงอะไร …
109 c#  .net  exception 

2
การแปลงไฟล์เป็น Base64String และกลับมาอีกครั้ง
ชื่อบอกทุกอย่าง: ฉันอ่านในไฟล์เก็บถาวร tar.gz เช่นนั้น แบ่งไฟล์ออกเป็นอาร์เรย์ของไบต์ แปลงไบต์เหล่านั้นเป็นสตริง Base64 แปลงสตริง Base64 นั้นกลับเป็นอาร์เรย์ของไบต์ เขียนไบต์เหล่านั้นกลับเข้าไปในไฟล์ tar.gz ใหม่ ฉันสามารถยืนยันได้ว่าทั้งสองไฟล์มีขนาดเท่ากัน (วิธีการด้านล่างนี้จะคืนค่าจริง) แต่ฉันไม่สามารถแยกเวอร์ชันสำเนาได้อีกต่อไป ฉันพลาดอะไรไปรึเปล่า? Boolean MyMethod(){ using (StreamReader sr = new StreamReader("C:\...\file.tar.gz")) { String AsString = sr.ReadToEnd(); byte[] AsBytes = new byte[AsString.Length]; Buffer.BlockCopy(AsString.ToCharArray(), 0, AsBytes, 0, AsBytes.Length); String AsBase64String = Convert.ToBase64String(AsBytes); byte[] tempBytes = Convert.FromBase64String(AsBase64String); File.WriteAllBytes(@"C:\...\file_copy.tar.gz", tempBytes); …

6
เหตุใดเราจึงต้องใช้คีย์เวิร์ด "เหตุการณ์" ในขณะที่กำหนดเหตุการณ์
ฉันไม่เข้าใจว่าทำไมเราต้องใช้คีย์เวิร์ด "เหตุการณ์" ในขณะที่กำหนดเหตุการณ์เมื่อเราสามารถทำสิ่งเดียวกันโดยไม่ต้องใช้คีย์เวิร์ด "เหตุการณ์" เพียงแค่ใช้ผู้รับมอบสิทธิ์ เช่น public delegate void CustomEventHandler(int a, string b); public event CustomEventHandler customEvent; customEvent += new CustomEventHandler(customEventHandler); customEvent(1,"a"); // Raising the event ที่นี่ถ้าฉันลบคีย์เวิร์ด "เหตุการณ์" ออกจากบรรทัดที่สองฉันก็สามารถเพิ่มเหตุการณ์ได้โดยการเรียกผู้แทน ใครช่วยบอกหน่อยได้ไหมว่าทำไมต้องใช้คีย์เวิร์ดเหตุการณ์นี้
109 c#  .net 

1
ข้อผิดพลาด:“ โหนดที่จะแทรกมาจากบริบทเอกสารอื่น”
เมื่อฉันโทรหาXmlNode.AppendChild()ฉันได้รับข้อผิดพลาดนี้: โหนดที่จะแทรกมาจากบริบทเอกสารอื่น static public XmlNode XMLNewChildNode(XmlNode oParent, string sName, string sNamespaceURI, string sNodeType) { XmlNode oNode = moDoc.CreateNode(sNodeType, sName, sNamespaceURI); oParent.AppendChild(oNode); return oNode; } รหัสนี้ถูกแปลงจากเวอร์ชัน VB 6.0 ซึ่งเป็นรหัสนี้ (โปรดละเว้นพารามิเตอร์ที่เป็นทางเลือกฉันมีโอเวอร์โหลดสำหรับพวกเขาในเวอร์ชัน C #): Public Function XMLNewChildNode(ByVal oParent As IXMLDOMNode, ByVal _ sName As String, Optional ByVal sNamespaceURI As String = "", _ …
109 c#  xml 

9
ฉันจะทำให้แอป WinForms เป็นแบบเต็มหน้าจอได้อย่างไร
ฉันมีแอป WinForms ที่ฉันพยายามทำให้เต็มหน้าจอ (ค่อนข้างเหมือนกับสิ่งที่ VS ทำในโหมดเต็มหน้าจอ) ขณะนี้ฉันกำลังตั้งค่าFormBorderStyleไปNoneและWindowStateการMaximizedที่ให้ฉันเป็นพื้นที่เล็ก ๆ น้อย ๆ แต่ก็ไม่ได้ครอบคลุมมากกว่าแถบงานถ้ามันจะมองเห็นได้ ฉันต้องทำอะไรบ้างเพื่อใช้พื้นที่นั้นด้วย สำหรับคะแนนโบนัสมีอะไรบ้างที่ฉันสามารถทำให้MenuStripซ่อนอัตโนมัติเพื่อสละพื้นที่นั้นได้ด้วย
109 c#  .net  winforms 

4
xUnit: Assert two List <T> เท่ากับ?
ฉันยังใหม่กับ TDD และ xUnit ดังนั้นฉันจึงต้องการทดสอบวิธีการของฉันที่มีลักษณะดังนี้: List&lt;T&gt; DeleteElements&lt;T&gt;(this List&lt;T&gt; a, List&lt;T&gt; b); มีวิธีการยืนยันที่ฉันสามารถใช้ได้หรือไม่? ฉันคิดว่าอะไรแบบนี้น่าจะดี List&lt;int&gt; values = new List&lt;int&gt;() { 1, 2, 3 }; List&lt;int&gt; expected = new List&lt;int&gt;() { 1 }; List&lt;int&gt; actual = values.DeleteElements(new List&lt;int&gt;() { 2, 3 }); Assert.Exact(expected, actual); มีแบบนี้ด้วยเหรอ?
109 c#  xunit 

5
ฉันจะเลือกระหว่าง Semaphore และ SemaphoreSlim ได้อย่างไร?
อินเทอร์เฟซสาธารณะของพวกเขาดูเหมือนกัน เอกสารระบุว่า SemaphoreSlim เป็นทางเลือกที่มีน้ำหนักเบาและไม่ได้ใช้สัญญาณเคอร์เนลของ Windows แหล่งข้อมูลนี้ระบุว่า SemaphoreSlim เร็วกว่ามาก ในสถานการณ์ใดที่ SemaphoreSlim มีความหมายมากกว่า Semaphore และในทางกลับกัน

10
ตรวจสอบว่าค่าอยู่ในอาร์เรย์ (C #)
ฉันจะตรวจสอบได้อย่างไรว่าค่าอยู่ในอาร์เรย์ใน C # เช่นฉันต้องการสร้างอาร์เรย์พร้อมรายชื่อเครื่องพิมพ์ สิ่งเหล่านี้จะถูกป้อนเข้ากับเมธอดซึ่งจะดูที่แต่ละสตริงในทางกลับกันและถ้าสตริงนั้นเหมือนกับค่าในอาร์เรย์ให้ดำเนินการนั้น ตัวอย่างเช่น: string[] printer = {"jupiter", "neptune", "pangea", "mercury", "sonic"}; foreach (p in printer) { PrinterSetup(p); } นี่คือชื่อของเครื่องพิมพ์ซึ่งถูกป้อนเข้ากับเมธอด PrinterSetup PrinterSetup จะมีลักษณะเช่นนี้ (pseudocode บางตัว): public void PrinterSetup(printer) { if (printer == "jupiter") { Process.Start("BLAH BLAH CODE TO ADD PRINTER VIA WINDOWS EXEC"); } } ฉันจะจัดรูปแบบif (printer == …
109 c#  .net  arrays  string 


14
วิธีที่ดีที่สุดในการแสดงทศนิยมโดยไม่มีศูนย์ต่อท้าย
มีตัวจัดรูปแบบการแสดงที่จะแสดงทศนิยมเป็นตัวแทนสตริงเหล่านี้ใน c # โดยไม่ต้องปัดเศษหรือไม่? // decimal -&gt; string 20 -&gt; 20 20.00 -&gt; 20 20.5 -&gt; 20.5 20.5000 -&gt; 20.5 20.125 -&gt; 20.125 20.12500 -&gt; 20.125 0.000 -&gt; 0 {0. #} จะปัดเศษและการใช้ฟังก์ชันประเภท Trim บางอย่างจะไม่ทำงานกับคอลัมน์ตัวเลขที่ถูกผูกไว้ในตาราง
109 c#  formatting  decimal 

5
AsQueryable () มีจุดประสงค์อะไร?
มีจุดประสงค์AsQueryable()เพื่อให้คุณสามารถส่งIEnumerableต่อไปยังวิธีการที่อาจคาดหวังIQueryableหรือมีเหตุผลที่เป็นประโยชน์ในการแสดงIEnumerableเป็นIQueryable? ตัวอย่างเช่นควรจะเป็นสำหรับกรณีเช่นนี้หรือไม่: IEnumerable&lt;Order&gt; orders = orderRepo.GetAll(); // I don't want to create another method that works on IEnumerable, // so I convert it here. CountOrders(orders.AsQueryable()); public static int CountOrders(IQueryable&lt;Order&gt; ordersQuery) { return ordersQuery.Count(); } หรือทำให้มันแตกต่างไปจากเดิม: IEnumerable&lt;Order&gt; orders = orderRepo.GetAll(); IQueryable&lt;Order&gt; ordersQuery = orders.AsQueryable(); IEnumerable&lt;Order&gt; filteredOrders = orders.Where(o =&gt; o.CustomerId == …

21
ตัดทศนิยมสองตำแหน่งโดยไม่ต้องปัดเศษ
สมมติว่าฉันมีค่า 3.4679 และต้องการ 3.46 ฉันจะตัดทศนิยมให้เหลือสองตำแหน่งโดยไม่ต้องปัดเศษได้อย่างไร ฉันได้ลองทำสิ่งต่อไปนี้แล้ว แต่ทั้งสามให้ 3.47: void Main() { Console.Write(Math.Round(3.4679, 2,MidpointRounding.ToEven)); Console.Write(Math.Round(3.4679, 2,MidpointRounding.AwayFromZero)); Console.Write(Math.Round(3.4679, 2)); } สิ่งนี้ส่งคืน 3.46 แต่ดูเหมือนว่าจะสกปรกอย่างไร: void Main() { Console.Write(Math.Round(3.46799999999 -.005 , 2)); }
109 c#  math  rounding 

12
ถ้า (items! = null) ฟุ่มเฟือยก่อน foreach (รายการ T ในรายการ)?
ฉันมักจะเจอรหัสดังต่อไปนี้: if ( items != null) { foreach(T item in items) { //... } } โดยทั่วไปifเงื่อนไขจะทำให้แน่ใจว่าforeachบล็อกจะดำเนินการต่อเมื่อitemsไม่เป็นโมฆะ ฉันสงสัยว่าifเงื่อนไขนั้นจำเป็นจริงๆหรือforeachจะจัดการกับกรณีนี้หรือitems == nullไม่ ฉันหมายความว่าฉันสามารถเขียน foreach(T item in items) { //... } โดยไม่ต้องกังวลว่าจะitemsเป็นโมฆะหรือไม่? เป็นifฟุ่มเฟือยสภาพ? หรือขึ้นอยู่กับประเภทของitemsหรืออาจจะTด้วย?

7
คัดลอกไฟล์ไปยังไดเร็กทอรีเอาต์พุตโดยใช้ csproj dotnetcore
ดังนั้นปัญหาของฉันค่อนข้างง่าย ฉันมีไฟล์บางไฟล์ที่ต้องการคัดลอกไปยังไดเร็กทอรีเอาต์พุตของบิลด์ไม่ว่าจะเป็นเวอร์ชันดีบักหรือรีลีสเผยแพร่ ข้อมูลทั้งหมดที่ฉันสามารถหาได้เกี่ยวกับแนวทางการกำหนดค่า json แบบเก่า ใครมีตัวอย่างใช้ csproj กับ dotnetcore บ้างครับ?
109 c#  .net-core 

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