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

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

4
วิธีปฏิบัติที่ดีที่สุดในการโทร ConfigureAwait สำหรับรหัสฝั่งเซิร์ฟเวอร์ทั้งหมด
เมื่อคุณมีรหัสฝั่งเซิร์ฟเวอร์ (เช่นบางส่วนApiController) และฟังก์ชั่นของคุณจะไม่ตรงกัน - เพื่อให้พวกเขากลับมาTask<SomeObject>- มันถือว่าเป็นวิธีที่ดีที่สุดว่าเวลาที่คุณรอคอยฟังก์ชั่นที่คุณโทรหาConfigureAwait(false)? ฉันได้อ่านว่ามันมีประสิทธิภาพมากกว่าเพราะไม่ต้องสลับบริบทของเธรดกลับไปเป็นบริบทของเธรดดั้งเดิม อย่างไรก็ตามด้วย ASP.NET Web Api หากคำขอของคุณเข้ามาในเธรดเดียวและคุณรอฟังก์ชั่นและการโทรConfigureAwait(false)ที่อาจทำให้คุณอยู่ในเธรดอื่นเมื่อคุณส่งคืนผลลัพธ์สุดท้ายของApiControllerฟังก์ชัน ฉันได้พิมพ์ตัวอย่างของสิ่งที่ฉันพูดถึงด้านล่าง: public class CustomerController : ApiController { public async Task<Customer> Get(int id) { // you are on a particular thread here var customer = await SomeAsyncFunctionThatGetsCustomer(id).ConfigureAwait(false); // now you are on a different thread! will that cause problems? …


17
เหตุใดจึงต้องจับและสร้างข้อยกเว้นขึ้นใหม่ใน C #
ฉันกำลังดูบทความC # - วัตถุการถ่ายโอนข้อมูลบน DTO ที่ต่อเนื่องกันได้ บทความประกอบด้วยรหัสชิ้นนี้: public static string SerializeDTO(DTO dto) { try { XmlSerializer xmlSer = new XmlSerializer(dto.GetType()); StringWriter sWriter = new StringWriter(); xmlSer.Serialize(sWriter, dto); return sWriter.ToString(); } catch(Exception ex) { throw ex; } } ส่วนที่เหลือของบทความดูมีเหตุผลและสมเหตุสมผล (สำหรับ noob) แต่การลองจับการขว้างเป็น WtfException ... นี่มันไม่เทียบเท่ากับการจัดการกับข้อยกเว้นหรือเปล่า? Ergo: public static string SerializeDTO(DTO dto) …

16
รับทุกประเภทที่ใช้อินเตอร์เฟส
ใช้การไตร่ตรองฉันจะทำให้ทุกประเภทที่ใช้อินเทอร์เฟซกับ C # 3.0 / .NET 3.5 มีโค้ดน้อยที่สุดและลดการทำซ้ำให้น้อยที่สุดได้อย่างไร นี่คือสิ่งที่ฉันต้องการเขียนใหม่: foreach (Type t in this.GetType().Assembly.GetTypes()) if (t is IMyInterface) ; //do stuff

17
ความแตกต่าง C # ระหว่าง == และเท่ากับ ()
ฉันมีเงื่อนไขในการประยุกต์ใช้ Silverlight ที่เปรียบเทียบ 2 สายด้วยเหตุผลบางอย่างเมื่อผมใช้==มันกลับผิดพลาดในขณะที่.Equals()ผลตอบแทนที่แท้จริง นี่คือรหัส: if (((ListBoxItem)lstBaseMenu.SelectedItem).Content.Equals("Energy Attack")) { // Execute code } if (((ListBoxItem)lstBaseMenu.SelectedItem).Content == "Energy Attack") { // Execute code } มีเหตุผลอะไรที่ทำให้สิ่งนี้เกิดขึ้น?
548 c#  .net  equals 

9
ความแตกต่างระหว่าง InvariantCulture และการเปรียบเทียบสตริงสามัญ
เมื่อเปรียบเทียบสองสายใน c # เพื่อความเท่าเทียมกันความแตกต่างระหว่าง InvariantCulture และการเปรียบเทียบลำดับคืออะไร?

13
ฉันจะคืน NULL จากวิธีการทั่วไปใน C # ได้อย่างไร
ฉันมีวิธีการทั่วไปที่มีรหัส (จำลอง) (ใช่ฉันทราบว่า IList มีภาคแสดง แต่รหัสของฉันไม่ได้ใช้ IList แต่มีการรวบรวมอื่น ๆ แต่นี่ก็ไม่เกี่ยวข้องกับคำถาม ... ) static T FindThing<T>(IList collection, int id) where T : IThing, new() { foreach T thing in collecion { if (thing.Id == id) return thing; } return null; // ERROR: Cannot convert null to type parameter 'T' because it …
546 c#  generics 

7
ใครบ้างมีเกณฑ์มาตรฐาน (รหัส & ผลลัพธ์) เปรียบเทียบประสิทธิภาพของแอพ Android ที่เขียนใน Xamarin C # และ Java [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิด 2 ปีที่ผ่านมา ฉันพบว่า Xamarin อ้างว่าการใช้งานโมโนบน Android และแอพที่รวบรวมด้วย C # นั้นเร็วกว่าโค้ด Java ใครบ้างที่มีการวัดประสิทธิภาพจริง ๆ บนโค้ด Java และ C # ที่คล้ายกันมากบนแพลตฟอร์ม Android ที่แตกต่างกันเพื่อตรวจสอบการอ้างสิทธิ์ดังกล่าวสามารถโพสต์โค้ดและผลลัพธ์ได้หรือไม่ เพิ่มเมื่อวันที่ 18 มิถุนายน 2013 เนื่องจากไม่มีคำตอบและไม่สามารถหามาตรฐานดังกล่าวที่ทำโดยผู้อื่นได้ตัดสินใจทำการทดสอบของฉันเอง น่าเสียดายที่คำถามของฉันยังคง "ถูกล็อก" ดังนั้นฉันจึงไม่สามารถโพสต์สิ่งนี้เป็นคำตอบได้เพียงแก้ไขคำถามเท่านั้น โปรดลงคะแนนเพื่อเปิดคำถามนี้อีกครั้ง สำหรับ C # ฉันใช้ Xamarin.Android Ver 4.7.09001 (เบต้า) ซอร์สโค้ดข้อมูลทั้งหมดที่ฉันใช้สำหรับการทดสอบและรวบรวมแพ็คเกจ APK อยู่ใน GitHub: …
544 c#  java  android  xamarin  dot42 

9
เชื่อมสตริงทั้งหมดภายใน List <string> โดยใช้ LINQ
มีการแสดงออก LINQ ง่าย ๆ ที่จะเรียงทั้งหมดของฉัน List&lt;string&gt;รายการคอลเลกชันเข้าstringด้วยกันด้วยอักขระตัวคั่นหรือไม่ เกิดอะไรขึ้นถ้าคอลเลกชันเป็นของวัตถุที่กำหนดเองแทนstring? ลองนึกภาพฉันต้อง concatenate object.Nameบน
543 c#  linq  .net-3.5 

5
พฤติกรรมการแปลงโดยนัยที่กำหนดเองโดยไม่ระบุตัวตน
หมายเหตุ: สิ่งนี้ดูเหมือนจะได้รับการแก้ไขในRoslyn คำถามนี้เกิดขึ้นเมื่อการเขียนคำตอบของฉันคนนี้ซึ่งพูดคุยเกี่ยวกับการเชื่อมโยงกันของผู้ประกอบการด้วย null coalescing เช่นเดียวกับการเตือนความคิดของตัวดำเนินการ null-coalescing คือการแสดงออกของแบบฟอร์ม x ?? y ประเมินก่อนxจากนั้น: หากค่าxเป็น null yจะถูกประเมินและนั่นคือผลลัพธ์สุดท้ายของการแสดงออก หากค่าของxไม่ใช่ค่าว่างyจะไม่ถูกประเมินและค่าของxเป็นผลลัพธ์สุดท้ายของการแสดงออกหลังจากแปลงเป็นประเภทการรวบรวมเวลาyหากจำเป็น ตอนนี้มักจะมีความจำเป็นสำหรับการแปลงไม่มีหรือมันเป็นเพียงแค่จากประเภท nullable ที่ไม่ใช่ nullable หนึ่ง - ปกติชนิดที่เหมือนกันหรือเพียงแค่จาก (พูด) เพื่อint? intอย่างไรก็ตามคุณสามารถสร้างตัวดำเนินการแปลงโดยนัยของคุณเองและสิ่งเหล่านี้จะถูกใช้เมื่อจำเป็น สำหรับกรณีง่าย ๆx ?? yฉันไม่เห็นพฤติกรรมแปลก ๆ อย่างไรก็ตามด้วยความที่(x ?? y) ?? zฉันเห็นพฤติกรรมที่สับสน นี่คือโปรแกรมทดสอบสั้น ๆ แต่สมบูรณ์ - ผลลัพธ์อยู่ในความคิดเห็น: using System; public struct A { public static implicit …

16
ความแตกต่างระหว่างการเขียนโปรแกรมที่เปิดเผยและจำเป็นคืออะไร? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ฉันค้นหาเว็บเพื่อหาความหมายสำหรับการเขียนโปรแกรมที่จำเป็นและมีความหมายซึ่งจะทำให้ฉันมีแสงสว่าง แต่ภาษาที่ใช้ในบางส่วนของทรัพยากรที่ฉันได้พบเป็นที่น่ากลัว - เช่นที่วิกิพีเดีย ไม่มีใครมีตัวอย่างในโลกแห่งความเป็นจริงที่พวกเขาสามารถแสดงให้ฉันเห็นว่าอาจนำมุมมองบางอย่างมาสู่เรื่องนี้ (อาจเป็นใน C #)?

27
เปรียบเทียบสองอาร์เรย์ไบต์ใน. NET
ฉันจะทำเร็วนี้ได้อย่างไร แน่นอนฉันสามารถทำสิ่งนี้: static bool ByteArrayCompare(byte[] a1, byte[] a2) { if (a1.Length != a2.Length) return false; for (int i=0; i&lt;a1.Length; i++) if (a1[i]!=a2[i]) return false; return true; } แต่ฉันกำลังมองหาฟังก์ชันBCLหรือวิธีที่ได้รับการพิสูจน์แล้วว่าเหมาะสมที่สุดในการทำเช่นนี้ java.util.Arrays.equals((sbyte[])(Array)a1, (sbyte[])(Array)a2); ทำงานได้ดี แต่ดูเหมือนว่าจะไม่ทำงานสำหรับ x64 หมายเหตุ: คำตอบอย่างรวดเร็วของฉันที่นี่
541 c#  .net  arrays  performance  j# 

22
ซ้ายเข้าร่วมใน LINQ
วิธีดำเนินการรวมด้านนอกด้านซ้ายใน C # LINQ กับวัตถุโดยไม่ต้องใช้join-on-equals-intoคำสั่ง มีวิธีใดที่จะทำเช่นนั้นด้วยwhereประโยค? แก้ไขปัญหา: สำหรับการเข้าร่วมภายในเป็นเรื่องง่ายและฉันมีวิธีแก้ปัญหาเช่นนี้ List&lt;JoinPair&gt; innerFinal = (from l in lefts from r in rights where l.Key == r.Key select new JoinPair { LeftId = l.Id, RightId = r.Id}) แต่สำหรับด้านนอกเข้าร่วมฉันต้องการวิธีแก้ปัญหา ฉันเป็นแบบนี้ แต่มันไม่ทำงาน List&lt; JoinPair&gt; leftFinal = (from l in lefts from r in rights select new …
539 c#  linq  join 

4
ฉันสามารถใช้เครื่องหมายคำพูดคู่ในสตริงตัวอักษรต่อคำได้หรือไม่?
ในสตริงตัวอักษรคำต่อคำ (@ "foo") ใน C # เครื่องหมายแบ็กสแลชจะไม่ถือว่าเป็น escapes ดังนั้นการทำ \ "เพื่อให้ได้อัญประกาศคู่ไม่ทำงานมีวิธีใดที่จะได้รับการเสนอราคาซ้ำในสตริงตัวอักษรคำต่อคำ ? สิ่งนี้เข้าใจไม่ได้: string foo = @"this \"word\" is escaped";

15
ฉันสามารถเพิ่มวิธีการขยายไปยังคลาสแบบคงที่ที่มีอยู่ได้หรือไม่
ฉันเป็นแฟนตัวยงของวิธีการขยายใน C # แต่ยังไม่เคยประสบความสำเร็จในการเพิ่มวิธีการขยายไปยังระดับคงที่เช่นคอนโซล ตัวอย่างเช่นถ้าฉันต้องการเพิ่มส่วนขยายใน Console เรียกว่า 'WriteBlueLine' เพื่อให้ฉันไปได้: Console.WriteBlueLine("This text is blue"); ฉันลองวิธีนี้โดยการเพิ่มวิธีการคงที่ในที่สาธารณะโดยใช้คอนโซลเป็นพารามิเตอร์ 'this' ... แต่ไม่มีลูกเต๋า! public static class Helpers { public static void WriteBlueLine(this Console c, string text) { Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine(text); Console.ResetColor(); } } สิ่งนี้ไม่ได้เพิ่มวิธี 'WriteBlueLine' ลงในคอนโซล ... ฉันทำผิดหรือเปล่า หรือขอสิ่งที่เป็นไปไม่ได้?

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