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

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

9
รหัสที่ไม่สามารถเข้าถึงได้ แต่สามารถเข้าถึงได้โดยมีข้อยกเว้น
รหัสนี้เป็นส่วนหนึ่งของแอปพลิเคชันที่อ่านและเขียนไปยังฐานข้อมูลที่เชื่อมต่อ ODBC trueมันจะสร้างบันทึกในฐานข้อมูลและการตรวจสอบแล้วถ้าเป็นประวัติการณ์สร้างเรียบร้อยแล้วกลับมา ความเข้าใจของฉันเกี่ยวกับโฟลว์การควบคุมมีดังนี้: command.ExecuteNonQuery()ได้รับการบันทึกไว้เพื่อโยนInvalid​Operation​Exceptionเมื่อ "การเรียกเมธอดไม่ถูกต้องสำหรับสถานะปัจจุบันของวัตถุ" ดังนั้นหากเป็นเช่นนั้นการดำเนินการของtryบล็อกจะหยุดลงfinallyบล็อกจะถูกดำเนินการจากนั้นจะดำเนินการreturn false;ที่ด้านล่าง อย่างไรก็ตาม IDE ของฉันอ้างว่าreturn false;เป็นรหัสที่ไม่สามารถเข้าถึงได้ และดูเหมือนว่าจะเป็นจริงฉันสามารถลบออกและรวบรวมได้โดยไม่มีข้อตำหนิใด ๆ อย่างไรก็ตามสำหรับฉันดูเหมือนว่าจะไม่มีค่าส่งคืนสำหรับเส้นทางรหัสที่มีการโยนข้อยกเว้นดังกล่าว private static bool createRecord(String table, IDictionary<String,String> data, System.Data.IDbConnection conn, OdbcTransaction trans) { [... some other code ...] int returnValue = 0; try { command.CommandText = sb.ToString(); returnValue = command.ExecuteNonQuery(); return returnValue == 1; } finally …

16
วิธีแทนที่ช่องว่างสีขาวหลายช่องด้วยช่องว่างเดียว
สมมติว่าฉันมีสตริงเช่น: "Hello how are you doing?" ฉันต้องการฟังก์ชันที่เปลี่ยนช่องว่างหลายช่องให้เป็นช่องว่างเดียว ดังนั้นฉันจะได้รับ: "Hello how are you doing?" ฉันรู้ว่าฉันสามารถใช้ regex หรือโทรได้ string s = "Hello how are you doing?".replace(" "," "); แต่ฉันจะต้องเรียกมันหลาย ๆ ครั้งเพื่อให้แน่ใจว่าช่องว่างตามลำดับทั้งหมดถูกแทนที่ด้วยช่องว่างเพียงอันเดียว มีวิธีการในตัวสำหรับสิ่งนี้หรือไม่?
108 c#  string  whitespace 

3
วิธีสร้างไฟล์คลาส C # โดยอัตโนมัติจากสตริง JSON [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ รับวัตถุ JSON ต่อไปนี้ form = { "name": "", "address": { "street": "", "city": "", "province": "", "postalCode": "", "country": "" }, "phoneDay": "", "phoneCell": "", "businessName": "", "website": "", "email": "" } เครื่องมือในการสร้างคลาส C # ต่อไปนี้โดยอัตโนมัติคืออะไร? public class ContactInfo { …
108 c#  json  code-generation 


6
เหตุใดวิธีการเชื่อมต่อ C # จึงไม่ประกาศว่าเป็นนามธรรมหรือเสมือน
วิธีการ C # ในอินเทอร์เฟซถูกประกาศโดยไม่ใช้virtualคีย์เวิร์ดและแทนที่ในคลาสที่ได้รับโดยไม่ต้องใช้overrideคีย์เวิร์ด มีเหตุผลนี้หรือไม่? ฉันคิดว่ามันเป็นเพียงความสะดวกทางภาษาและเห็นได้ชัดว่า CLR รู้วิธีจัดการสิ่งนี้ภายใต้ฝาครอบ (วิธีการไม่ใช่เสมือนตามค่าเริ่มต้น) แต่มีเหตุผลทางเทคนิคอื่น ๆ หรือไม่? นี่คือ IL ที่คลาสที่ได้รับสร้างขึ้น: class Example : IDisposable { public void Dispose() { } } .method public hidebysig newslot virtual final instance void Dispose() cil managed { // Code size 2 (0x2) .maxstack 8 IL_0000: nop IL_0001: ret } …

6
ตัวจับเวลาที่ดีที่สุดสำหรับใช้ในบริการ Windows
ล็อค คำถามนี้และคำตอบถูกล็อกเนื่องจากคำถามไม่ตรงประเด็น แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ยังไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันต้องการสร้างบริการ windows ซึ่งจะดำเนินการทุกช่วงเวลา N คำถามคือ ฉันควรใช้ตัวควบคุมตัวจับเวลาแบบใด: System.Timers.TimerหรือSystem.Threading.Timerอย่างใดอย่างหนึ่ง มีผลต่อบางสิ่งหรือไม่? ฉันถามเพราะฉันได้ยินหลักฐานมากมายเกี่ยวกับการทำงานที่ไม่ถูกต้องSystem.Timers.Timerในบริการ windows ขอบคุณ.

7
อัปเดตหมายเลขเวอร์ชันโดยอัตโนมัติ
ฉันต้องการให้คุณสมบัติเวอร์ชันของแอปพลิเคชันของฉันเพิ่มขึ้นสำหรับแต่ละรุ่น แต่ฉันไม่แน่ใจเกี่ยวกับวิธีเปิดใช้งานฟังก์ชันนี้ใน Visual Studio (2005/2008) ฉันได้พยายามระบุ AssemblyVersion เป็น 1.0 * แต่มันไม่ได้ตรงตามที่ฉันต้องการ ฉันยังใช้ไฟล์การตั้งค่าและในความพยายามก่อนหน้านี้เมื่อเวอร์ชันแอสเซมบลีเปลี่ยนการตั้งค่าของฉันได้ถูกรีเซ็ตเป็นค่าเริ่มต้นเนื่องจากแอปพลิเคชันค้นหาไฟล์การตั้งค่าในไดเร็กทอรีอื่น ฉันต้องการให้แสดงหมายเลขเวอร์ชันในรูปแบบ 1.1.38 ดังนั้นเมื่อผู้ใช้พบปัญหาฉันสามารถบันทึกเวอร์ชันที่ใช้อยู่และแจ้งให้อัปเกรดได้หากมีเวอร์ชันเก่า คำอธิบายสั้น ๆ เกี่ยวกับวิธีการทำงานของเวอร์ชันจะได้รับการชื่นชม หมายเลขรุ่นและหมายเลขการแก้ไขจะเพิ่มขึ้นเมื่อใด

9
การลดการใช้หน่วยความจำของแอพพลิเคชั่น. NET?
มีเคล็ดลับอะไรบ้างในการลดการใช้หน่วยความจำของแอปพลิเคชัน. NET พิจารณาโปรแกรม C # อย่างง่ายต่อไปนี้ class Program { static void Main(string[] args) { Console.ReadLine(); } } คอมไพล์ในโหมดรีลีสสำหรับx64และรันนอก Visual Studio ตัวจัดการงานรายงานสิ่งต่อไปนี้: Working Set: 9364k Private Working Set: 2500k Commit Size: 17480k จะดีกว่าเล็กน้อยถ้าคอมไพล์สำหรับx86 : Working Set: 5888k Private Working Set: 1280k Commit Size: 7012k จากนั้นฉันลองใช้โปรแกรมต่อไปนี้ซึ่งทำเหมือนกัน แต่พยายามตัดขนาดของกระบวนการหลังจากการเริ่มต้นรันไทม์: class Program { static void …

12
วิธีแก้ไขการกะพริบใน User controls
ในแอปพลิเคชันของฉันฉันย้ายจากส่วนควบคุมหนึ่งไปยังอีกส่วนหนึ่งอยู่ตลอดเวลา ฉันได้สร้างไม่ ของการควบคุมของผู้ใช้ แต่ในระหว่างการนำทางการควบคุมของฉันสั่นไหว ใช้เวลาอัปเดต 1 หรือ 2 วินาที ฉันพยายามตั้งค่านี้ SetStyle(ControlStyles.OptimizedDoubleBuffer, true); or SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.AllPaintingInWmPaint, true); SetStyle(ControlStyles.DoubleBuffer, true); แต่ก็ไม่ได้ผล ... แต่ละตัวควบคุมมีภาพพื้นหลังเหมือนกันโดยมีตัวควบคุมต่างกัน แล้ววิธีแก้คืออะไร .. ขอบคุณ.

4
Linq เป็น EntityFramework DateTime
Наэтотвопросестьответына Stack Overflow нарусском : LINQ to Entities ไม่รู้จักเมธอด 'System.DateTime AddDays (Double)' ในแอปพลิเคชันของฉันฉันกำลังใช้ Entity Framework โต๊ะของฉัน -Article -period -startDate ฉันต้องการบันทึกที่ตรงกับ => DateTime.Now > startDate and (startDate + period) > DateTime.Now ฉันลองใช้รหัสนี้ แต่ใช้งานได้แล้ว Context.Article .Where(p => p.StartDate < DateTime.Now) .Where(p => p.StartDate.AddDays(p.Period) > DateTime.Now) เมื่อฉันเรียกใช้รหัสของฉันข้อยกเว้นต่อไปนี้เกิดขึ้น LINQ เป็นเอนทิตีไม่รู้จักเมธอด 'System.DateTime AddDays (Double)' และวิธีนี้ไม่สามารถแปลเป็นนิพจน์ร้านค้าได้


3
การตั้งค่าวัตถุเป็น null vs Dispose ()
ฉันรู้สึกทึ่งกับวิธีการทำงานของ CLR และ GC (ฉันกำลังขยายความรู้ในเรื่องนี้โดยการอ่าน CLR ผ่าน C # หนังสือ / โพสต์ของ Jon Skeet และอื่น ๆ ) อย่างไรก็ตามอะไรคือความแตกต่างระหว่างการพูดว่า: MyClass myclass = new MyClass(); myclass = null; หรือโดยการทำให้ MyClass ใช้ IDisposable และ destructor และเรียก Dispose ()? นอกจากนี้หากฉันมีบล็อกรหัสที่มีคำสั่งใช้ (เช่นด้านล่าง) หากฉันก้าวผ่านรหัสและออกจากบล็อกการใช้งานวัตถุนั้นจะถูกกำจัดทิ้งหรือเมื่อมีการรวบรวมขยะเกิดขึ้น? จะเกิดอะไรขึ้นถ้าฉันเรียก Dispose () ในบล็อกการใช้งาน anyay? using (MyDisposableObj mydispobj = new MyDisposableObj()) { …
108 c#  .net  disposable 

12
วิธีที่เร็วที่สุดในการแปลงเลขฐาน 10 เป็นฐานใน. NET
ฉันมีและเก่า (ish) วิธี C # ที่ฉันเขียนซึ่งใช้ตัวเลขและแปลงเป็นฐานใดก็ได้: string ConvertToBase(int number, char[] baseChars); ไม่ใช่ทั้งหมดที่รวดเร็วและเรียบร้อย มีวิธีที่ดีและเป็นที่รู้จักในการบรรลุสิ่งนี้ใน. NET หรือไม่? ฉันกำลังมองหาสิ่งที่ช่วยให้ฉันใช้ฐานใดก็ได้ที่มีสตริงอักขระที่ต้องการใช้ อนุญาตเฉพาะฐาน 16, 10, 8 และ 2: Convert.ToString(1, x); ฉันต้องการใช้สิ่งนี้เพื่อให้ได้ฐานที่สูงมากโดยใช้ประโยชน์จากตัวเลขตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ทั้งหมด เช่นเดียวกับในหัวข้อนี้แต่สำหรับ C # ไม่ใช่ JavaScript ไม่มีใครรู้วิธีที่ดีและมีประสิทธิภาพในการทำ C #?
108 c#  .net  int  base  number-systems 

2
ใช้ PropertyInfo เพื่อค้นหาประเภทคุณสมบัติ
ฉันต้องการแยกวิเคราะห์โครงสร้างวัตถุแบบไดนามิกเพื่อทำการตรวจสอบความถูกต้องที่กำหนดเอง การตรวจสอบความถูกต้องไม่สำคัญเช่นนี้ แต่ฉันต้องการเข้าใจคลาส PropertyInfo ให้ดีขึ้น ฉันจะทำอะไรแบบนี้ public bool ValidateData(object data) { foreach (PropertyInfo propertyInfo in data.GetType().GetProperties()) { if (the property is a string) { string value = propertyInfo.GetValue(data, null); if value is not OK { return false; } } } return true; } จริงๆส่วนเดียวที่ฉันสนใจในขณะนี้คือ 'ถ้าคุณสมบัติเป็นสตริง' ฉันจะค้นหาจากออบเจ็กต์ PropertyInfo ได้อย่างไรว่าเป็นประเภทใด ฉันจะต้องจัดการกับสิ่งพื้นฐานเช่นสตริง ints …
108 c#  .net  reflection 

4
การกำหนดค่าอ้างอิงเป็นแบบอะตอมเหตุใดจึงจำเป็นต้องมี Interlocked.Exchange (ref Object, Object)?
ในบริการเว็บ asmx แบบมัลติเธรดของฉันฉันมีฟิลด์คลาส _allData ของประเภท SystemData ของฉันเองซึ่งประกอบด้วยไม่กี่รายการList<T>และDictionary<T>ทำเครื่องหมายเป็นvolatile. ข้อมูลระบบ ( _allData) ถูกรีเฟรชเป็นครั้งคราวและฉันทำได้โดยการสร้างออบเจ็กต์อื่นที่เรียกว่าnewDataและเติมโครงสร้างข้อมูลด้วยข้อมูลใหม่ เมื่อเสร็จแล้วฉันก็มอบหมาย private static volatile SystemData _allData public static bool LoadAllSystemData() { SystemData newData = new SystemData(); /* fill newData with up-to-date data*/ ... _allData = newData. } สิ่งนี้ควรใช้งานได้เนื่องจากการกำหนดเป็นแบบปรมาณูและเธรดที่มีการอ้างอิงถึงข้อมูลเก่ายังคงใช้งานต่อไปและส่วนที่เหลือจะมีข้อมูลระบบใหม่หลังการมอบหมาย แต่คนสอนฉันบอกว่าแทนการใช้volatileคำหลักและมอบหมายง่ายฉันควรใช้InterLocked.Exchangeเพราะเขาบอกว่าบนแพลตฟอร์มบางคนก็ไม่ได้รับประกันว่าได้รับมอบหมายอ้างอิงอะตอม ยิ่งไปกว่านั้น: เมื่อฉันประกาศthe _allDataฟิลด์เป็นvolatileไฟล์ Interlocked.Exchange<SystemData>(ref _allData, newData); สร้างคำเตือน "การอ้างอิงถึงเขตข้อมูลที่มีความผันผวนจะไม่ถือว่าเป็นความผันผวน" ฉันควรคิดอย่างไรเกี่ยวกับเรื่องนี้

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