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

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

9
การเติมรายการแบบเลื่อนลงมีดโกนจากรายการ <วัตถุ> ใน MVC
ฉันมีโมเดล: public class DbUserRole { public int UserRoleId { get; set; } public string UserRole { get; set; } } public class DbUserRoles { public List&lt;DbUserRole&gt; GetRoles() { BugnetReports RoleDropDown = new BugnetReports(); List&lt;DbUserRole&gt; Roles = new List&lt;DbUserRole&gt;(); DataSet table = RoleDropDown.userRoleDropDown(); foreach (DataRow item in table.Tables[0].Rows) { DbUserRole ur …

3
ปรับขนาดภาพตามสัดส่วนด้วยข้อ จำกัด MaxHeight และ MaxWidth
การใช้System.Drawing.Image. หากความกว้างหรือความสูงของรูปภาพเกินค่าสูงสุดจำเป็นต้องปรับขนาดตามสัดส่วน หลังจากปรับขนาดแล้วจำเป็นต้องตรวจสอบให้แน่ใจว่าความกว้างหรือความสูงยังไม่เกินขีด จำกัด ความกว้างและความสูงจะถูกปรับขนาดจนกว่าจะไม่เกินสูงสุดและต่ำสุดโดยอัตโนมัติ (ขนาดใหญ่ที่สุดที่เป็นไปได้) และยังคงรักษาอัตราส่วนไว้

11
จะตรวจจับคีย์ที่กดอยู่ในปัจจุบันได้อย่างไร?
ในWindows Formsคุณสามารถทราบตำแหน่งปัจจุบันของเคอร์เซอร์ได้ทุกเมื่อด้วยคลาสCursors สิ่งเดียวกันนี้ดูเหมือนจะไม่สามารถใช้ได้กับแป้นพิมพ์ เป็นไปได้หรือไม่ที่จะทราบว่าShiftมีการกดแป้นหรือไม่ จำเป็นอย่างยิ่งที่จะต้องติดตามทุกการแจ้งเตือนของแป้นพิมพ์ (เหตุการณ์ KeyDown และ KeyUp)
124 c#  .net  winforms  keyboard 

6
ฉันจะใช้ IEnumerable <T> ได้อย่างไร
ฉันรู้วิธีใช้ IEnumerable ที่ไม่ใช่แบบทั่วไปเช่นนี้: using System; using System.Collections; namespace ConsoleApplication33 { class Program { static void Main(string[] args) { MyObjects myObjects = new MyObjects(); myObjects[0] = new MyObject() { Foo = "Hello", Bar = 1 }; myObjects[1] = new MyObject() { Foo = "World", Bar = 2 }; foreach (MyObject x …
124 c#  .net  generics 

7
การคอมไพล์ตามเงื่อนไขและเป้าหมายเฟรมเวิร์ก
มีสถานที่เล็ก ๆ น้อย ๆ ที่โค้ดสำหรับโครงการของฉันอาจสามารถปรับปรุงได้อย่างมากหากกรอบเป้าหมายเป็นเวอร์ชันใหม่กว่า ฉันต้องการใช้ประโยชน์จากการรวบรวมแบบมีเงื่อนไขใน C # ให้ดีขึ้นเพื่อเปลี่ยนสิ่งเหล่านี้ตามต้องการ สิ่งที่ต้องการ: #if NET40 using FooXX = Foo40; #elif NET35 using FooXX = Foo35; #else NET20 using FooXX = Foo20; #endif สัญลักษณ์เหล่านี้ฟรีหรือไม่? ฉันต้องฉีดสัญลักษณ์เหล่านี้เป็นส่วนหนึ่งของการกำหนดค่าโครงการหรือไม่ ดูเหมือนง่ายพอที่จะทำเพราะฉันจะรู้ว่าเฟรมเวิร์กใดถูกกำหนดเป้าหมายจาก MSBuild /p:DefineConstants="NET40" ผู้คนรับมือกับสถานการณ์นี้อย่างไร? คุณกำลังสร้างการกำหนดค่าที่แตกต่างกันหรือไม่? คุณส่งผ่านค่าคงที่ผ่านทางบรรทัดคำสั่งหรือไม่?
124 c#  .net-3.5  msbuild  .net-4.0 

8
“ ถือว่าคำเตือนทั้งหมดเป็นข้อผิดพลาดยกเว้น…” ใน Visual Studio
ใน Visual Studio ฉันสามารถเลือกตัวเลือก "ปฏิบัติต่อคำเตือนเป็นข้อผิดพลาด" เพื่อป้องกันไม่ให้โค้ดของฉันรวบรวมหากมีคำเตือนใด ๆ ทีมของเราใช้ตัวเลือกนี้ แต่มีคำเตือนสองประการที่เราอยากจะเก็บไว้เป็นคำเตือน มีตัวเลือกในการระงับคำเตือน แต่เราต้องการให้แสดงเป็นคำเตือนเพื่อไม่ให้เกิดผล ดูเหมือนว่าวิธีเดียวที่จะได้รับพฤติกรรมที่เราต้องการคือป้อนรายการหมายเลขคำเตือน C # ทั้งหมดลงในกล่องข้อความ "คำเตือนเฉพาะ" ยกเว้นสองรายการที่เราต้องการให้ถือว่าเป็นคำเตือน นอกเหนือจากอาการปวดหัวในการบำรุงรักษาข้อเสียที่ใหญ่ที่สุดของแนวทางนี้คือคำเตือนบางอย่างไม่มีตัวเลขดังนั้นจึงไม่สามารถอ้างอิงได้อย่างชัดเจน ตัวอย่างเช่น "ไม่สามารถแก้ไขข้อมูลอ้างอิงนี้ไม่พบแอสเซมบลี" Data .... "" ไม่มีใครรู้วิธีที่ดีกว่านี้? ชี้แจงสำหรับผู้ที่ไม่เห็นทันทีว่าเหตุใดจึงมีประโยชน์ ลองนึกดูว่าคำเตือนส่วนใหญ่ทำงานอย่างไร พวกเขาบอกคุณว่ามีบางอย่างผิดปกติในโค้ดที่คุณเพิ่งเขียน ใช้เวลาประมาณ 10 วินาทีในการแก้ไขและนั่นจะช่วยให้โค้ดเบสสะอาดขึ้น คำเตือน "ล้าสมัย" แตกต่างจากนี้มาก บางครั้งการแก้ไขหมายถึงการใช้ลายเซ็นวิธีการใหม่ แต่ถ้าทั้งชั้นเรียนล้าสมัยและคุณมีการใช้งานมันกระจัดกระจายไปตามโค้ดหลายแสนบรรทัดอาจใช้เวลาแก้ไขเป็นสัปดาห์หรือมากกว่านั้น คุณไม่ต้องการให้งานสร้างเสียนานขนาดนั้น แต่คุณต้องการเห็นคำเตือนเกี่ยวกับเรื่องนี้แน่นอน นี่ไม่ใช่แค่กรณีสมมุติเท่านั้น แต่สิ่งนี้เคยเกิดขึ้นกับเรา คำเตือน "#warning" ตามตัวอักษรยังไม่ซ้ำกัน ฉันมักจะต้องการตรวจสอบ แต่ฉันไม่ต้องการทำลายงานสร้าง
124 c#  msbuild 


15
หยุด 'Ding' เมื่อกด Enter
ฉันมีแอปพลิเคชัน Windows Forms ที่เรียบง่ายมาก และใน Windows (หรืออย่างน้อย Windows Forms Applications) เมื่อคุณกด Enter ในขณะที่อยู่ในตัวควบคุมกล่องข้อความบรรทัดเดียวคุณจะได้ยิน Ding เป็นเสียงที่ไม่ถูกใจซึ่งบ่งบอกว่าคุณไม่สามารถเข้าสู่การขึ้นบรรทัดใหม่ได้เนื่องจากเป็นกล่องข้อความบรรทัดเดียว ทั้งหมดนี้ไม่เป็นไร อย่างไรก็ตามในแบบฟอร์มของฉันฉันมีกล่องข้อความ 1 กล่องและปุ่มค้นหา และฉันกำลังอนุญาตให้ผู้ใช้ทำการค้นหาโดยกด Enter หลังจากที่พวกเขาพิมพ์เสร็จแล้วดังนั้นพวกเขาจึงไม่ต้องใช้เมาส์คลิกปุ่มค้นหา แต่เสียง Ding นี้เกิดขึ้น มันน่ารำคาญมาก เราจะทำอย่างไรให้เสียงนั้นไม่เล่นเลยในแบบฟอร์มของฉัน @David H - นี่คือวิธีที่ฉันตรวจจับการกด Enter: private void textBox1_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { // Perform search now. } }

8
คำสั่ง LINQ เร็วกว่าลูป 'foreach' หรือไม่?
ฉันกำลังเขียนตัวจัดการ Mesh Rendering และคิดว่ามันเป็นความคิดที่ดีที่จะจัดกลุ่มตาข่ายทั้งหมดที่ใช้ shader เดียวกันแล้วแสดงผลสิ่งเหล่านี้ในขณะที่ฉันอยู่ใน shader pass นั้น ฉันกำลังใช้foreachลูปอยู่ แต่สงสัยว่าการใช้ LINQ อาจทำให้ฉันมีประสิทธิภาพเพิ่มขึ้นหรือไม่?
124 c#  performance  linq  foreach 

10
ทำให้คุณสมบัติ deserialize แต่ไม่ทำให้เป็นอนุกรมกับ json.net
เรามีไฟล์คอนฟิกูเรชันบางไฟล์ที่สร้างโดยการทำให้อ็อบเจกต์ C # เป็นอนุกรมกับ Json.net เราต้องการย้ายคุณสมบัติหนึ่งของคลาสซีเรียลไลซ์ออกจากการเป็นคุณสมบัติ enum ธรรมดาไปยังคุณสมบัติคลาส วิธีง่ายๆวิธีหนึ่งในการทำเช่นนี้คือการทิ้งคุณสมบัติ enum เก่าไว้ในคลาสและจัดให้ Json.net อ่านคุณสมบัตินี้เมื่อเราโหลด config แต่อย่าบันทึกอีกครั้งเมื่อเราจัดลำดับออบเจ็กต์ต่อไป เราจะจัดการกับการสร้างคลาสใหม่จาก enum เก่าแยกกัน มีวิธีง่ายๆในการทำเครื่องหมาย (เช่นด้วยแอตทริบิวต์) คุณสมบัติของออบเจ็กต์ C # หรือไม่เพื่อที่ Json.net จะเพิกเฉยต่อเมื่อทำให้เป็นซีเรียลไลซ์เท่านั้น แต่จะต้องเข้าร่วมเมื่อทำการ deserializing
124 c#  json.net 

17
แบบสอบถาม SQL ดิบที่ไม่มี DbSet - Entity Framework Core
ด้วยการลบ Entity Framework Core dbData.Database.SqlQuery&lt;SomeModel&gt;ฉันไม่พบวิธีแก้ปัญหาในการสร้างแบบสอบถาม SQL ดิบสำหรับข้อความค้นหาแบบเต็มของฉันที่จะส่งคืนข้อมูลตารางและอันดับด้วย วิธีเดียวที่ฉันเคยเห็นในการสร้างแบบสอบถาม SQL ดิบใน Entity Framework Core คือผ่านdbData.Product.FromSql("SQL SCRIPT");ซึ่งไม่มีประโยชน์เนื่องจากฉันไม่มี DbSet ที่จะแมปอันดับที่ฉันกลับมาในแบบสอบถาม ความคิดใด ๆ ???

6
การแมป Ctrl-T ที่คมชัดขึ้นใหม่หายไป
ดูเหมือนว่าฉันจะสูญเสียการทำแผนที่Resharper Ctrl+ Tเพื่อค้นหาคลาสอย่างรวดเร็วฉันลองใช้วิธีแก้ปัญหาที่อธิบายไว้ที่นี่: แป้นพิมพ์ลัดไม่ทำงานใน Visual Studio ที่ติดตั้ง Resharper โดยเฉพาะคำตอบที่ยอมรับ: ก่อนอื่นฉันจะลองรีเซ็ตการตั้งค่า Visual Studio ทั้งหมด (เครื่องมือ&gt; นำเข้าและส่งออกการตั้งค่า&gt; รีเซ็ตการตั้งค่าทั้งหมด) จากนั้นไปที่ Resharper&gt; ตัวเลือก&gt; แป้นพิมพ์และเมนูและใช้รูปแบบแป้นพิมพ์ลัดอีกครั้ง และนี่: การตั้งค่าเป็น Resharper / Options / KeyBoard &amp; Menus / None / Apply and Save แล้ว Resharper / Options / KeyBoard &amp; Menus / ตั้งค่าเป็น Visual Studio / ใช้และบันทึก หลังไม่ได้ทำอะไรเลย …

9
ไม่พบเมธอด: '!! 0 [] System.Array.Empty ()'
ฉันสร้างแอปใหม่ด้วย VS 2015 RC และเทมเพลต MVC และไม่ได้แก้ไขโค้ดบรรทัดใด ๆ ฉันมีข้อผิดพลาดนี้: Method not found: '!!0[] System.Array.Empty()'. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.MissingMethodException: Method not …

1
สามารถใช้วิธีการขยายกับอินเทอร์เฟซได้หรือไม่?
เป็นไปได้ไหมที่จะใช้วิธีการขยายกับอินเทอร์เฟซ (คำถาม C #) ตัวอย่างเช่นเพื่อให้บรรลุสิ่งต่อไปนี้: สร้างอินเทอร์เฟซ ITopology สร้างเมธอดส่วนขยายสำหรับอินเทอร์เฟซนี้ (เช่น public static int CountNodes (ITopology topologyIf นี้)) จากนั้นเมื่อสร้างคลาส (เช่น MyGraph) ซึ่งใช้ ITopology มันจะมีส่วนขยาย Count Nodes โดยอัตโนมัติ วิธีนี้คลาสที่ใช้อินเทอร์เฟซไม่จำเป็นต้องมีชื่อคลาสที่กำหนดเพื่อให้สอดคล้องกับสิ่งที่กำหนดไว้ในเมธอดส่วนขยาย

3
ถือว่าเป็นที่ยอมรับหรือไม่ที่จะไม่เรียก Dispose () บนวัตถุ TPL Task
ฉันต้องการทริกเกอร์งานให้ทำงานบนเธรดพื้นหลัง ฉันไม่อยากรอให้งานเสร็จ ใน. net 3.5 ฉันจะทำสิ่งนี้: ThreadPool.QueueUserWorkItem(d =&gt; { DoSomething(); }); ใน. net 4 TPL เป็นวิธีที่แนะนำ รูปแบบทั่วไปที่ฉันเห็นแนะนำคือ: Task.Factory.StartNew(() =&gt; { DoSomething(); }); อย่างไรก็ตามStartNew()วิธีการส่งกลับวัตถุซึ่งการดำเนินการTask IDisposableดูเหมือนว่าคนที่แนะนำลายนี้จะมองข้ามไป เอกสาร MSDN เกี่ยวกับTask.Dispose()วิธีการกล่าวว่า: "โทรหา Dispose ทุกครั้งก่อนที่คุณจะปล่อยการอ้างอิงล่าสุดของคุณไปที่งาน" คุณไม่สามารถเรียกทิ้งในงานได้จนกว่าจะเสร็จสิ้นดังนั้นการรอเธรดหลักและเรียกใช้การกำจัดจะทำให้จุดที่ต้องทำบนเธรดพื้นหลังตั้งแต่แรก ดูเหมือนว่าจะไม่มีเหตุการณ์ที่เสร็จสมบูรณ์ / เสร็จสิ้นที่สามารถใช้ในการล้างข้อมูลได้ หน้า MSDN ในคลาสงานไม่แสดงความคิดเห็นเกี่ยวกับเรื่องนี้และหนังสือ "Pro C # 2010 ... " แนะนำรูปแบบเดียวกันและไม่แสดงความคิดเห็นเกี่ยวกับการกำจัดงาน ฉันรู้ว่าถ้าฉันปล่อยทิ้งไว้โปรแกรมสุดท้ายจะจับมันได้ในที่สุด แต่นี่จะกลับมากัดฉันเมื่อฉันทำงานหนักและลืมงานแบบนี้และเธรด Finalizer ท่วมท้นหรือไม่? ดังนั้นคำถามของฉันคือ: ก็เป็นที่ยอมรับที่จะไม่เรียกDispose()ในTaskระดับในกรณีนี้หรือไม่? …

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