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

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

2
เหตุใดพฤติกรรมของโค้ดจึงแตกต่างกันในโหมดรีลีสและดีบัก
พิจารณารหัสต่อไปนี้: private static void Main(string[] args) { var ar = new double[] { 100 }; FillTo(ref ar, 5); Console.WriteLine(string.Join(",", ar.Select(a => a.ToString()).ToArray())); } public static void FillTo(ref double[] dd, int N) { if (dd.Length >= N) return; double[] Old = dd; double d = double.NaN; if (Old.Length > 0) d …
84 c#  .net  .net-core  coreclr 

3
ทำตัวดำเนินการลัดวงจร || และ && มีอยู่สำหรับบูลีนที่เป็นโมฆะ? บางครั้ง RuntimeBinder ก็คิดเช่นนั้น
ฉันอ่านข้อกำหนดภาษา C # บนตัวดำเนินการตรรกะแบบมีเงื่อนไข ||และ&&หรือที่เรียกว่าตัวดำเนินการทางตรรกะที่ลัดวงจร สำหรับฉันแล้วมันดูเหมือนไม่ชัดเจนว่าสิ่งเหล่านี้มีอยู่สำหรับบูลีนที่เป็นโมฆะหรือไม่เช่นประเภทตัวถูกดำเนินการNullable<bool>(เขียนด้วยbool?) ดังนั้นฉันจึงลองด้วยการพิมพ์แบบไม่ไดนามิก: bool a = true; bool? b = null; bool? xxxx = b || a; // compile-time error, || can't be applied to these types ดูเหมือนจะช่วยชำระคำถามได้ (ฉันไม่เข้าใจข้อกำหนดอย่างชัดเจน แต่สมมติว่าการใช้งานคอมไพเลอร์ Visual C # ถูกต้องตอนนี้ฉันรู้แล้ว) อย่างไรก็ตามฉันก็อยากลองdynamicผูกด้วยเช่นกัน ดังนั้นฉันจึงลองสิ่งนี้แทน: static class Program { static dynamic A { get { …

8
เหตุใดโอเปอเรเตอร์จึงช้ากว่าการเรียกใช้เมธอดมาก (โครงสร้างจะช้าลงเฉพาะใน JIT ที่เก่ากว่า)
Intro: ฉันเขียนโค้ดประสิทธิภาพสูงใน C # ใช่ฉันรู้ว่า C ++ จะให้การเพิ่มประสิทธิภาพที่ดีขึ้น แต่ฉันก็ยังเลือกที่จะใช้ C # ฉันไม่ต้องการที่จะอภิปรายทางเลือกนั้น แต่ฉันอยากได้ยินจากคนที่พยายามเขียนโค้ดประสิทธิภาพสูงบน. NET Framework คำถาม: เหตุใดตัวดำเนินการในรหัสด้านล่างจึงช้ากว่าการเรียกเมธอดเทียบเท่า ?? เหตุใดวิธีการส่งผ่านสองคู่ในโค้ดด้านล่างเร็วกว่าวิธีการที่เทียบเท่ากันโดยผ่านโครงสร้างที่มีสองคู่อยู่ภายใน (A: JIT รุ่นเก่าปรับโครงสร้างให้เหมาะสมไม่ดี) มีวิธีรับ. NET JIT Compiler เพื่อจัดการโครงสร้างอย่างง่ายได้อย่างมีประสิทธิภาพเทียบเท่ากับสมาชิกของโครงสร้างหรือไม่ (A: รับ JIT ใหม่กว่า) สิ่งที่ฉันคิดว่าฉันรู้: คอมไพเลอร์. NET JIT ดั้งเดิมจะไม่อินไลน์อะไรที่เกี่ยวข้องกับโครงสร้าง ควรใช้โครงสร้างที่แปลกประหลาดเฉพาะเมื่อคุณต้องการประเภทค่าขนาดเล็กที่ควรปรับให้เหมาะสมเช่นบิวท์อิน แต่เป็นจริง โชคดีที่ใน. NET 3.5SP1 และ. (ฉันเดาว่าพวกเขาทำอย่างนั้นเพราะไม่เช่นนั้นโครงสร้างซับซ้อนใหม่ที่พวกเขาแนะนำจะมีประสิทธิภาพที่น่ากลัว ... ไม่เกี่ยวข้องกับปัญหานี้มากเกินไป สิ่งที่การทดสอบของฉันแสดงให้เห็น: ฉันได้ตรวจสอบแล้วว่าฉันมี JIT Optimizer รุ่นใหม่กว่าโดยตรวจสอบว่าไฟล์ …

12
IE9 WebBrowser Control จะรองรับคุณสมบัติทั้งหมดของ IE9 รวมถึง SVG หรือไม่
ฉันเพิ่งอัปเกรดเป็น IE9-beta ตอนนี้ในแอปพลิเคชัน WinForm .Net (3.5) ของฉันฉันต้องการใช้WebBrowserการควบคุม ดังนั้นคำถามของฉันคือWebBrowserคอนโทรลจะแสดงคุณสมบัติและฟังก์ชันทั้งหมดของ IE9 หรือไม่? ข้อกังวลของฉันคือฉันต้องการแสดงกราฟิก SVG บนมัน

30
คุณพบข้อดีของวิธีการขยายอะไรบ้าง? [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดขึ้นมาใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา "ผู้ไม่เชื่อ" ของ C # ถามฉันว่าจุดประสงค์ของวิธีการขยายคืออะไร ฉันอธิบายว่าคุณสามารถเพิ่มวิธีการใหม่ให้กับวัตถุที่กำหนดไว้แล้วโดยเฉพาะอย่างยิ่งเมื่อคุณไม่ได้เป็นเจ้าของ / ควบคุมแหล่งที่มาให้กับวัตถุดั้งเดิม เขาพูดขึ้นมาว่า "ทำไมไม่เพิ่มวิธีการในชั้นเรียนของคุณเอง" เราไปมาเรื่อย ๆ (ในทางที่ดี) คำตอบทั่วไปของฉันคือมันเป็นอีกเครื่องมือหนึ่งในแถบเครื่องมือและคำตอบของเขาก็คือการเสียเครื่องมือไปโดยเปล่าประโยชน์ ... แต่ฉันคิดว่าฉันจะได้คำตอบที่ "รู้แจ้ง" มากกว่า มีสถานการณ์ใดบ้างที่คุณเคยใช้เมธอดส่วนขยายที่คุณไม่มี (หรือไม่ควรมี) โดยใช้เมธอดที่เพิ่มในคลาสของคุณเอง

14
ปัญหาเกี่ยวกับใบรับรอง X509Store ค้นหา FindByThumbprint
ฉันมีปัญหาเมื่อใช้วิธีนี้ X509Store.Certificates.Find public static X509Certificate2 FromStore(StoreName storeName, StoreLocation storeLocation, X509FindType findType, string findValue) { X509Store store = new X509Store(storeName, storeLocation); store.Open(OpenFlags.ReadOnly); try { //findValue = "7a6fa503ab57b81d6318a51ca265e739a51ce660" var results = store.Certificates.Find(findType, findValue, true); return results[0]; } finally { store.Close(); } } ในกรณีนี้วิธีการค้นหาจะส่งคืนผลลัพธ์ 0 ( results.Count == 0) แต่ถ้าฉันใส่ findValue เป็นค่าคงที่วิธีการค้นหาใบรับรอง public …

10
ฉันจะกำหนดเวลาให้บริการ C # Windows ทำงานทุกวันได้อย่างไร
ฉันมีบริการที่เขียนด้วยภาษา C # (.NET 1.1) และต้องการให้ดำเนินการล้างข้อมูลตอนเที่ยงคืนของทุกคืน ฉันต้องเก็บรหัสทั้งหมดไว้ในบริการดังนั้นวิธีที่ง่ายที่สุดในการทำสิ่งนี้คืออะไร? ใช้Thread.Sleep()และตรวจสอบเวลาที่หมุนไปหรือไม่?

9
ลบอักขระสุดท้ายออกจากสตริงใน C # วิธีที่สง่างาม?
2223,00ฉันมีสตริงเป็นตัวเลขเช่นนี้ 2223ผมอยากจะเปลี่ยนไป นี่คือ: ไม่มีข้อมูลหลังเครื่องหมาย " , " สมมติว่าจะมีทศนิยมเพียงสองตัวหลังเครื่องหมาย " , " ฉันทำ: str = str.Remove(str.Length - 3, 3); มีวิธีแก้ปัญหาที่หรูหรากว่านี้หรือไม่? อาจจะใช้ฟังก์ชั่นอื่น? - ฉันไม่ชอบใส่ตัวเลขที่ชัดเจน -
84 c#  .net  string 

5
วิธีบอก Json.Net ทั่วโลกให้ใช้ StringEnumConverter กับ enums ทั้งหมด
ฉันต้องการแยกการแจงนับการแทนค่าสตริงและในทางกลับกันด้วย json.net วิธีเดียวที่ฉันสามารถหาเพื่อบอกให้กรอบงานใช้StringEnumConverterคือการใส่คำอธิบายประกอบคุณสมบัติที่เป็นปัญหาดังนี้: [JsonConverter(typeof(StringEnumConverter))] public virtual MyEnums MyEnum { get; set; } อย่างไรก็ตามในกรณีการใช้งานของฉันการกำหนดค่า json.net ทั่วโลกจะสะดวกกว่ามากเพื่อให้การแจงนับทั้งหมดได้รับ (de) ต่อเนื่องโดยใช้StringEnumConverterคำอธิบายประกอบโดยไม่จำเป็นต้องมีคำอธิบายประกอบเพิ่มเติม มีวิธีใดบ้างที่จะทำได้เช่นด้วยความช่วยเหลือของประเพณีJsonSerializerSettingsหรือไม่?
84 c#  .net  json  json.net 

4
การควบคุมเว็บเบราว์เซอร์ในเธรดใหม่
ฉันมีรายการ Uri ที่ฉันต้องการ "คลิก" เพื่อให้บรรลุสิ่งนี้ฉันพยายามสร้างการควบคุมเว็บเบราว์เซอร์ใหม่ต่อ Uri ฉันสร้างเธรดใหม่ต่อ Uri ปัญหาที่ฉันพบคือเธรดสิ้นสุดก่อนเอกสาร โหลดเต็มดังนั้นฉันจึงไม่สามารถใช้ประโยชน์จากเหตุการณ์ DocumentComplete ได้ฉันจะเอาชนะสิ่งนี้ได้อย่างไร var item = new ParameterizedThreadStart(ClicIt.Click); var thread = new Thread(item) {Name = "ClickThread"}; thread.Start(uriItem); public static void Click(object o) { var url = ((UriItem)o); Console.WriteLine(@"Clicking: " + url.Link); var clicker = new WebBrowser { ScriptErrorsSuppressed = true }; …

25
วิธีที่สวยงามที่สุดในการสร้างจำนวนเฉพาะ [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ปรับปรุงคำถามนี้ วิธีใดที่สวยงามที่สุดในการใช้ฟังก์ชันนี้: ArrayList generatePrimes(int n) ฟังก์ชันนี้จะสร้างช่วงแรกn(แก้ไข: ที่n>1) ดังนั้นgeneratePrimes(5)จะส่งกลับไฟล์ArrayList{2, 3, 5, 7, 11}ด้วย (ฉันกำลังทำสิ่งนี้ใน C # แต่ฉันพอใจกับการใช้งาน Java - หรือภาษาอื่น ๆ ที่คล้ายกันสำหรับเรื่องนั้น (ไม่ใช่ Haskell)) ฉันรู้วิธีเขียนฟังก์ชันนี้ แต่เมื่อคืนที่ผ่านมามันไม่ได้ออกมาดีอย่างที่หวัง นี่คือสิ่งที่ฉันคิดขึ้น: ArrayList generatePrimes(int toGenerate) { ArrayList primes = new ArrayList(); primes.Add(2); primes.Add(3); while (primes.Count < toGenerate) { …
84 c#  java  algorithm  primes 


4
เหตุใดรหัสนี้จึงให้คำเตือน“ การอ้างอิงโมฆะการอ้างอิงที่เป็นไปได้ที่เป็นไปได้”
พิจารณารหัสต่อไปนี้: using System; #nullable enable namespace Demo { public sealed class TestClass { public string Test() { bool isNull = _test == null; if (isNull) return ""; else return _test; // !!! } readonly string _test = ""; } } เมื่อผมสร้างนี้เส้นที่มีเครื่องหมายให้เตือนเรียบเรียง:!!!warning CS8603: Possible null reference return. ฉันพบว่ามันสับสนเล็กน้อยซึ่ง_testอ่านได้อย่างเดียวและเริ่มต้นว่าไม่ใช่ค่าว่าง หากฉันเปลี่ยนรหัสเป็นสิ่งต่อไปนี้คำเตือนจะหายไป: public string …

2
การเริ่มต้นพจนานุกรม C # นี้ถูกต้องอย่างไร
ฉันสะดุดต่อไปนี้และฉันสงสัยว่าทำไมมันไม่ทำให้เกิดข้อผิดพลาดทางไวยากรณ์ var dict = new Dictionary<string, object> { ["Id"] = Guid.NewGuid(), ["Tribes"] = new List<int> { 4, 5 }, ["MyA"] = new Dictionary<string, object> { ["Name"] = "Solo", ["Points"] = 88 } ["OtherAs"] = new List<Dictionary<string, object>> { new Dictionary<string, object> { ["Points"] = 1999 } } }; โปรดสังเกตว่า "," …

10
การเขียนโปรแกรมเชิงวัตถุ - วิธีการหลีกเลี่ยงการทำซ้ำในกระบวนการที่แตกต่างกันเล็กน้อยขึ้นอยู่กับตัวแปร
สิ่งที่เกิดขึ้นค่อนข้างมากในงานปัจจุบันของฉันคือมีกระบวนการทั่วไปที่ต้องเกิดขึ้น แต่แล้วส่วนแปลก ๆ ของกระบวนการนั้นต้องเกิดขึ้นแตกต่างกันเล็กน้อยขึ้นอยู่กับค่าของตัวแปรบางตัวและฉันไม่ ค่อนข้างแน่ใจว่าเป็นวิธีที่ดีที่สุดในการจัดการกับสิ่งนี้ ฉันจะใช้ตัวอย่างที่เรามักจะมีซึ่งกำลังทำสิ่งแตกต่างกันเล็กน้อยขึ้นอยู่กับประเทศที่เรากำลังเผชิญอยู่ ดังนั้นฉันมีชั้นเรียนลองเรียกมันว่าProcessor: public class Processor { public string Process(string country, string text) { text.Capitalise(); text.RemovePunctuation(); text.Replace("é", "e"); var split = text.Split(","); string.Join("|", split); } } ยกเว้นว่าจะมีเพียงการกระทำบางอย่างที่ต้องเกิดขึ้นในบางประเทศ ตัวอย่างเช่นมีเพียง 6 ประเทศเท่านั้นที่ต้องใช้ขั้นตอนการโอนเป็นทุน อักขระที่จะแยกอาจแตกต่างกันไปตามแต่ละประเทศ การเปลี่ยนสำเนียง'e'อาจจำเป็นต้องใช้เท่านั้นขึ้นอยู่กับประเทศ เห็นได้ชัดว่าคุณสามารถแก้ไขได้โดยทำสิ่งนี้: public string Process(string country, string text) { if (country == "USA" || country …
64 c#  oop 

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