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

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

1
ทำไมดัชนีผู้ประกอบการหมวกใหม่ไม่ได้จากคุณสมบัติการแบ่งอาร์เรย์ C # 8 เริ่มต้นที่ 0
C # 8.0 แนะนำวิธีการที่สะดวกในการอาร์เรย์ชิ้น - เห็นอย่างเป็นทางการ C # 8.0 blogpost ไวยากรณ์ในการเข้าถึงองค์ประกอบสุดท้ายของอาร์เรย์คือ int value[] = { 10, 11, 12, 13 }; int a = value[^1]; // 13 int b = value[^2]; // 12 ฉันสงสัยว่าทำไมการสร้างดัชนีสำหรับการเข้าถึงองค์ประกอบย้อนหลังเริ่มต้นที่ 1 แทนที่จะเป็น 0 มีเหตุผลทางเทคนิคสำหรับสิ่งนี้หรือไม่?
156 c#  arrays  indexing  c#-8.0 

8
การระงับ“ คำเตือน CS4014: เนื่องจากการโทรนี้ไม่รอการดำเนินการของวิธีการปัจจุบันยังคงดำเนินต่อไป…”
นี้ไม่ซ้ำกับ"วิธีการได้อย่างปลอดภัยเรียกวิธี async ใน C # โดยไม่ต้องรอคอย" ฉันจะระงับคำเตือนต่อไปนี้ได้อย่างไร? คำเตือน CS4014: เนื่องจากการโทรนี้ไม่ได้รอการดำเนินการของวิธีการปัจจุบันจะดำเนินต่อไปก่อนที่การโทรจะเสร็จสมบูรณ์ พิจารณาใช้โอเปอเรเตอร์ 'ที่รอ' กับผลลัพธ์ของการโทร ตัวอย่างง่ายๆ: static async Task WorkAsync() { await Task.Delay(1000); Console.WriteLine("Done!"); } static async Task StartWorkAsync() { WorkAsync(); // I want fire-and-forget // more unrelated async/await stuff here, e.g.: // ... await Task.Delay(2000); } สิ่งที่ฉันพยายามและไม่ชอบ: static async Task StartWorkAsync() …
156 c#  async-await 


11
จะแปลง SecureString เป็น System.String ได้อย่างไร
การจองทั้งหมดเกี่ยวกับการรักษาความปลอดภัยของ SecureString ของคุณโดยการสร้าง System.String นอกเหนือจากมันจะทำอย่างไร? ฉันจะแปลง System.Security.SecureString สามัญเป็น System.String สามัญได้อย่างไร ฉันแน่ใจว่าพวกคุณหลายคนที่คุ้นเคยกับ SecureString จะตอบว่าไม่ควรแปลง SecureString เป็นสตริง. NET ธรรมดาเพราะมันจะเอาการป้องกันความปลอดภัยทั้งหมด ฉันรู้ว่า แต่ตอนนี้โปรแกรมของฉันทำทุกอย่างด้วยสตริงปกติอยู่แล้วและฉันพยายามปรับปรุงความปลอดภัยของมันและถึงแม้ว่าฉันจะใช้ API ที่ส่งคืน SecureString ให้ฉันฉันไม่ได้พยายามใช้สิ่งนั้นเพื่อเพิ่มความปลอดภัยของฉัน ฉันรู้เรื่อง Marshal.SecureStringToBSTR แต่ฉันไม่รู้ว่าจะใช้ BSTR นั้นอย่างไรและสร้างระบบออกมา สำหรับผู้ที่อาจต้องการทราบว่าทำไมฉันต้องการทำเช่นนี้ดีฉันใช้รหัสผ่านจากผู้ใช้และส่งเป็นแบบฟอร์ม POST แบบ HTML เพื่อบันทึกผู้ใช้ลงในเว็บไซต์ ดังนั้น ... สิ่งนี้จะต้องมีการจัดการบัฟเฟอร์ที่ไม่ได้เข้ารหัส หากฉันสามารถเข้าถึงบัฟเฟอร์ที่ไม่ได้รับการจัดการฉันจินตนาการว่าฉันสามารถทำการสตรีมไบต์ต่อไบต์ที่เขียนบนสตรีมเครือข่ายและหวังว่าจะช่วยให้รหัสผ่านปลอดภัยตลอดทาง ฉันหวังว่าจะได้คำตอบสำหรับสถานการณ์เหล่านี้อย่างน้อยหนึ่งสถานการณ์
156 c#  .net  security  encryption 

5
พจนานุกรมตัวพิมพ์เล็กและตัวพิมพ์ใหญ่พร้อมสตริงของคีย์ใน C #
ถ้าฉันมีDictionary<String,...>มันเป็นไปได้ที่จะทำวิธีการเช่นContainsKeyกรณีตาย? ดูเหมือนจะเกี่ยวข้องกัน แต่ฉันไม่เข้าใจอย่างถูกต้อง: c # Dictionary: การทำให้ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ผ่านการประกาศ

12
ฉันจะยกเลิก / ยกเลิกภารกิจของ TPL ได้อย่างไร
ในหัวข้อฉันสร้างบางอย่าง System.Threading.Taskและเริ่มต้นแต่ละงาน เมื่อฉันทำ.Abort()เพื่อฆ่าเธรดงานจะไม่ถูกยกเลิก ฉันจะส่ง.Abort()ไปยังงานของฉันได้อย่างไร
156 c#  .net  multithreading  task  abort 


8
เป็นไปได้ไหมที่จะรอเหตุการณ์แทนที่จะเป็นวิธีการอื่นแบบ async?
ในแอปรถไฟใต้ดิน C # / XAML ของฉันมีปุ่มที่เริ่มกระบวนการทำงานที่ยาวนาน ดังนั้นตามที่แนะนำฉันใช้ async / รอคอยเพื่อให้แน่ใจว่าเธรด UI ไม่ถูกบล็อก: private async void Button_Click_1(object sender, RoutedEventArgs e) { await GetResults(); } private async Task GetResults() { // Do lot of complex stuff that takes a long time // (e.g. contact some web services) ... } บางครั้งสิ่งที่เกิดขึ้นภายใน GetResults จะต้องป้อนข้อมูลผู้ใช้เพิ่มเติมก่อนจึงจะสามารถดำเนินการต่อได้ …

29
ทำไมการเข้าถึงเส้นทางจึงถูกปฏิเสธ
ฉันมีปัญหาในการพยายามลบไฟล์ของฉัน แต่ได้รับการยกเว้น if (result == "Success") { if (FileUpload.HasFile) { try { File.Delete(Request.PhysicalApplicationPath + app_settings.login_images + txtUploadStatus.Text); string filename = Path.GetFileName(btnFileUpload.FileName); btnFileUpload.SaveAs(Request.PhysicalApplicationPath + app_settings.login_images + filename); } catch (Exception ex) { Message(ex.ToString()); } } } นอกจากนี้ฉันควรทราบว่าโฟลเดอร์ที่ฉันพยายามลบนั้นสามารถควบคุมบริการเครือข่ายได้อย่างสมบูรณ์ ข้อความยกเว้นทั้งหมดคือ: System.UnauthorizedAccessException: การเข้าถึงพา ธ 'C: \ Users \ gowdyn \ Documents \ Visual Studio …

18
วิธีการแทนที่ส่วนของสตริงตามตำแหน่งได้อย่างไร
ฉันมีสายนี้: ABCDEFGHIJ ฉันต้องการแทนที่จากตำแหน่ง 4 ถึงตำแหน่ง 5 ด้วยสตริง ZX มันจะมีลักษณะเช่นนี้: ABCZXFGHIJ แต่ไม่ควรใช้กับstring.replace("DE","ZX")- ฉันต้องใช้กับตำแหน่ง ฉันจะทำมันได้อย่างไร
155 c#  string  replace 

8
วิธีที่เหมาะสมในการแสดง InnerException แบบเต็มคืออะไร
เป็นวิธีที่เหมาะสมในการแสดงเต็มของฉันInnerExceptionคืออะไร ฉันพบว่า InnerExceptions บางอย่างของฉันมีอีกอันหนึ่งInnerExceptionและมันก็ค่อนข้างลึก จะInnerException.ToString()ทำงานให้ฉันหรือฉันต้องวนซ้ำInnerExceptionsและสร้างStringด้วยStringBuilder?

8
เปรียบเทียบคุณสมบัติของวัตถุสองรายการเพื่อค้นหาความแตกต่าง
ฉันมีวัตถุสองชนิดที่เหมือนกันและฉันต้องการวนลูปผ่านคุณสมบัติสาธารณะในแต่ละรายการและแจ้งเตือนผู้ใช้เกี่ยวกับคุณสมบัติที่ไม่ตรงกัน เป็นไปได้ไหมที่จะทำสิ่งนี้โดยไม่ทราบว่าคุณสมบัติของวัตถุมีอะไรบ้าง?
155 c#  .net 

3
{version} ไวด์การ์ดใน MVC4 Bundle
ใน MVC 4 เรามีการรวมกลุ่ม ในขณะที่กำหนดบันเดิลเราสามารถใช้ wildcard เช่น * สำหรับไฟล์ทั้งหมดในโฟลเดอร์ ในตัวอย่างด้านล่าง-{version}หมายความว่าอย่างไร public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Scripts/jquery-{version}.js")); }

10
คณิตศาสตร์เลขทศนิยมนั้นสอดคล้องกันใน C # หรือไม่ เป็นไปได้ไหม
ไม่นี่ไม่ใช่คำถาม"ทำไมจึงเป็น (1 / 3.0) * 3! = 1" ฉันได้อ่านเกี่ยวกับคะแนนจำนวนมากเมื่อเร็ว ๆ นี้; วิธีการคำนวณเดียวกันอาจให้ผลลัพธ์ที่แตกต่างกันในการตั้งค่าสถาปัตยกรรมหรือการเพิ่มประสิทธิภาพที่แตกต่างกัน นี่เป็นปัญหาสำหรับวิดีโอเกมที่เก็บรีเพลย์หรือเครือข่ายเพียร์ทูเพียร์ (ตรงข้ามกับเซิร์ฟเวอร์ - ไคลเอนต์) ซึ่งพึ่งพาลูกค้าทั้งหมดที่สร้างผลลัพธ์เดียวกันทุกครั้งที่รันโปรแกรม - ความคลาดเคลื่อนเล็กน้อยในหนึ่งเดียว การคำนวณ floating-point สามารถนำไปสู่สถานะเกมที่แตกต่างกันอย่างมากบนเครื่องที่แตกต่างกัน (หรือแม้แต่ในเครื่องเดียวกัน! ) นี้เกิดขึ้นแม้กระทั่งในหมู่ประมวลผลว่า "ตาม" มาตรฐาน IEEE-754หลักเพราะบางหน่วยประมวลผล (คือ x86) ใช้ความแม่นยำขยายคู่ นั่นคือพวกเขาใช้การลงทะเบียน 80 บิตเพื่อทำการคำนวณทั้งหมดจากนั้นตัดเป็น 64- บิตหรือ 32 บิตซึ่งนำไปสู่ผลลัพธ์การปัดเศษที่แตกต่างกันกว่าเครื่องที่ใช้ 64- บิตหรือ 32- บิตสำหรับการคำนวณ ฉันเห็นวิธีแก้ไขปัญหาออนไลน์หลายวิธี แต่ทั้งหมดสำหรับ C ++ ไม่ใช่ C #: ปิดใช้งานโหมดขยายความแม่นยำสองเท่า …

11
วิธีการเปรียบเทียบค่าสถานะใน C #
ฉันมีธง enum ด้านล่าง [Flags] public enum FlagTest { None = 0x0, Flag1 = 0x1, Flag2 = 0x2, Flag3 = 0x4 } ฉันไม่สามารถทำให้คำสั่ง if ประเมินว่าเป็นจริง FlagTest testItem = FlagTest.Flag1 | FlagTest.Flag2; if (testItem == FlagTest.Flag1) { // Do something, // however This is never true. } ฉันจะทำให้เรื่องนี้เป็นจริงได้อย่างไร
155 c#  .net  enums  attributes  flags 

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