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

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

4
เมื่อใดที่จะใช้ Task.Delay เมื่อใดที่จะใช้งาน Thread.Sleep
มีกฎที่ดีหรือไม่ที่จะใช้งานTaskDelayกับThread.Sleepเมื่อใด โดยเฉพาะมีค่าต่ำสุดที่จะให้เพื่อให้มีประสิทธิภาพ / มีประสิทธิภาพเหนืออื่น ๆ ? สุดท้ายเนื่องจาก Task.Delay ทำให้เกิดการสลับบริบทบนเครื่อง async / await มีค่าใช้จ่ายหรือไม่

11
วิธีปฏิบัติที่ดีที่สุดในการส่งคืนข้อผิดพลาดใน ASP.NET Web API
ฉันมีความกังวลเกี่ยวกับวิธีที่เราส่งคืนข้อผิดพลาดไปยังลูกค้า เราจะส่งคืนข้อผิดพลาดทันทีโดยการขว้างHttpResponseExceptionเมื่อเราพบข้อผิดพลาด public void Post(Customer customer) { if (string.IsNullOrEmpty(customer.Name)) { throw new HttpResponseException("Customer Name cannot be empty", HttpStatusCode.BadRequest) } if (customer.Accounts.Count == 0) { throw new HttpResponseException("Customer does not have any account", HttpStatusCode.BadRequest) } } หรือเราสะสมข้อผิดพลาดทั้งหมดจากนั้นส่งกลับไปที่ลูกค้า: public void Post(Customer customer) { List<string> errors = new List<string>(); if (string.IsNullOrEmpty(customer.Name)) { errors.Add("Customer …
384 c#  rest  asp.net-web-api 

10
ASP.NET Identity - HttpContext ไม่มีวิธีการขยายสำหรับ GetOwinContext
ฉันได้ดาวน์โหลดและรันตัวอย่าง ASP.NET Identity ได้สำเร็จจากที่นี่: https://github.com/rustd/AspnetIdentitySample ตอนนี้ฉันกำลังใช้กรอบงาน ASP.NET Identity ในโครงการของฉันและพบปัญหาซึ่งทำให้ฉันเป็นบ้าตลอดทั้งวัน ... GetOwinContext() ไม่มีอยู่เป็นวิธีการขยายในของฉัน HttpContext ฉันกำลังใช้เฟรมเวิร์กเอกลักษณ์ในไลบรารีคลาส ฉันได้ติดตั้งเฟรมเวิร์กเอกลักษณ์และทุกอย่าง (นอกเหนือจากนี้) ล่าสุดทำงานได้ดี ฉันได้ลองใช้รหัสเดียวกันกับตัวควบคุมโดยตรงและพบปัญหาเดียวกัน ฉันไม่มีข้อมูลอ้างอิงอย่างชัดเจนที่ใดที่หนึ่ง โค้ดบล็อกที่กำลังฆ่าฉันคือ: private IAuthenticationManager AuthenticationManager { get { return HttpContext.GetOwinContext().Authentication; } } ฉันได้เพิ่มการอ้างอิงถึงสิ่งต่อไปนี้ - ลองทั้งสองอย่างนี้ในไลบรารี่ของฉันและโดยตรงไปยังคอนโทรลเลอร์ไม่มีใครทำงานให้ฉัน ... using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.Owin.Security; using Microsoft.Owin; using System.Web; ... นี่ทำให้ฉันติดกำแพง .... มีความคิดอะไรบ้าง UPDATE ฉันได้ตรวจสอบเวอร์ชั่นของ …

4
วิธีรับองค์ประกอบ N แรกของรายการใน C #
ฉันต้องการใช้ Linq เพื่อสอบถามตารางเวลารถบัสในโครงการของฉันเพื่อที่ว่าเมื่อใดก็ตามที่ฉันสามารถรับรถบัสมาถึง 5 ครั้งต่อไป ฉันจะ จำกัด ข้อความค้นหาของฉันไว้ที่ผลลัพธ์ 5 รายการแรกได้อย่างไร โดยทั่วไปฉันจะนำชิ้นส่วนของรายการใน C # ได้อย่างไร (ใน Python ฉันจะใช้mylist[:5]เพื่อรับ 5 องค์ประกอบแรก)
384 c# 

5
ทำไมต้อง JsonRequestBehavior?
ทำไมถึงJson Request Behaviorจำเป็น? หากฉันต้องการ จำกัดHttpGetคำขอให้ดำเนินการของฉันฉันสามารถตกแต่งแอ็คชันด้วย[HttpPost]แอตทริบิวต์ ตัวอย่าง: [HttpPost] public JsonResult Foo() { return Json("Secrets"); } // Instead of: public JsonResult Foo() { return Json("Secrets", JsonRequestBehavior.AllowGet); } ทำไมจึงไม่[HttpPost]เพียงพอ ทำไมกรอบการทำงานของ "ข้อบกพร่อง" ที่เรามีJsonRequestBehavior.AllowGetสำหรับทุกJsonResultสิ่งที่เรามี หากฉันต้องการที่จะปฏิเสธการขอฉันจะเพิ่มHttpPostคุณสมบัติ

17
ใช้เมื่อใดใน vs ref vs out
มีคนถามผมในวันอื่น ๆ เมื่อพวกเขาควรใช้คำหลักพารามิเตอร์แทนout refในขณะที่ฉัน (ฉันคิด) เข้าใจความแตกต่างระหว่างrefและoutคำหลัก (ที่ได้รับการถามก่อน ) และคำอธิบายที่ดีที่สุดน่าจะเป็นที่ref== inและoutสิ่งที่บางส่วน (สมมุติหรือรหัส) ตัวอย่างที่ฉันควรใช้และไม่ได้outref ตั้งแต่refเป็นทั่วไปมากขึ้นทำไมคุณเคยต้องการที่จะใช้out? มันเป็นเพียงน้ำตาลวากยสัมพันธ์?
383 c# 

30
ไม่สามารถลบไดเรกทอรีด้วย Directory.Delete (เส้นทาง, จริง)
ฉันใช้. NET 3.5 พยายามลบไดเรกทอรีซ้ำโดยใช้: Directory.Delete(myPath, true); ความเข้าใจของฉันคือสิ่งนี้จะเกิดขึ้นหากไฟล์มีการใช้งานหรือมีปัญหาสิทธิ์ แต่ไม่เช่นนั้นควรลบไดเรกทอรีและเนื้อหาทั้งหมด อย่างไรก็ตามฉันได้รับสิ่งนี้เป็นครั้งคราว: System.IO.IOException: The directory is not empty. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive) at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive) ... ฉันไม่แปลกใจที่บางครั้งวิธีการโยน แต่ฉันประหลาดใจที่ได้รับข้อความนี้เมื่อเรียกซ้ำเป็นจริง (ฉันรู้ว่าไดเรกทอรีไม่ว่างเปล่า) มีเหตุผลที่ฉันเห็นสิ่งนี้แทน AccessViolationException หรือไม่
383 c#  .net  exception  io 


20
วิธีที่ดีกว่าในการตรวจสอบว่า Path เป็นไฟล์หรือ Directory
ฉันกำลังประมวลผลTreeViewไดเรกทอรีและไฟล์ ผู้ใช้สามารถเลือกไฟล์หรือไดเรกทอรีแล้วทำอะไรกับมัน สิ่งนี้ต้องการให้ฉันมีวิธีที่จะดำเนินการต่าง ๆ ตามการเลือกของผู้ใช้ ในขณะนี้ฉันกำลังทำอะไรเช่นนี้เพื่อตรวจสอบว่าเส้นทางเป็นไฟล์หรือไดเรกทอรี: bool bIsFile = false; bool bIsDirectory = false; try { string[] subfolders = Directory.GetDirectories(strFilePath); bIsDirectory = true; bIsFile = false; } catch(System.IO.IOException) { bIsFolder = false; bIsFile = true; } ฉันอดไม่ได้ที่จะรู้สึกว่ามันมีวิธีที่ดีกว่านี้! ฉันหวังว่าจะหาวิธีการ. NET แบบมาตรฐานเพื่อจัดการกับสิ่งนี้ แต่ฉันไม่สามารถทำได้ วิธีการดังกล่าวมีอยู่จริงหรือไม่และถ้าไม่มีความหมายที่ตรงไปตรงมาที่สุดคือการกำหนดว่าเส้นทางเป็นไฟล์หรือไดเรกทอรี
382 c#  .net  file  path  directory 


7
Styles.Render ใน MVC4
ใน.NET MVC4โครงการ@Styles.Renderทำงานอย่างไร ฉันหมายถึง@Styles.Render("~/Content/css")ไฟล์ที่มันกำลังเรียก? ฉันไม่มีไฟล์หรือโฟลเดอร์ชื่อ "css" ด้านในของฉัน Contentโฟลเดอร์

13
การใช้วิธีจบ / กำจัดใน C #
C # 2008 ฉันทำงานนี้มาระยะหนึ่งแล้วและฉันยังสับสนเกี่ยวกับการใช้ขั้นตอนสุดท้ายและการกำจัดในโค้ด คำถามของฉันอยู่ด้านล่าง: ฉันรู้ว่าเราต้องการเครื่องมือขั้นสุดท้ายขณะที่ทิ้งทรัพยากรที่ไม่มีการจัดการ อย่างไรก็ตามหากมีการจัดการทรัพยากรที่โทรไปยังทรัพยากรที่ไม่มีการจัดการมันจะยังคงต้องใช้ตัวเลือกสุดท้าย อย่างไรก็ตามหากฉันพัฒนาคลาสที่ไม่ได้ใช้ทรัพยากรที่ไม่มีการจัดการไม่ว่าทางตรงหรือทางอ้อมฉันควรใช้IDisposableเพื่ออนุญาตให้ลูกค้าของคลาสนั้นใช้ 'การใช้คำสั่ง' หรือไม่ เป็นไปได้ไหมที่จะใช้ IDisposable เพียงเพื่อให้ลูกค้าในชั้นเรียนของคุณใช้คำสั่ง use using(myClass objClass = new myClass()) { // Do stuff here } ฉันได้พัฒนาโค้ดง่าย ๆ ด้านล่างนี้เพื่อสาธิตการใช้งานสุดท้าย / กำจัดทิ้ง: public class NoGateway : IDisposable { private WebClient wc = null; public NoGateway() { wc = new WebClient(); wc.DownloadStringCompleted += …

19
รับสตริงการเชื่อมต่อจาก App.config
var connection = ConnectionFactory.GetConnection( ConfigurationManager.ConnectionStrings["Test"] .ConnectionString, DataBaseProvider); และนี่คือ App.config ของฉัน: <?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="Test" connectionString="Data Source=.;Initial Catalog=OmidPayamak;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> </configuration> แต่เมื่อโครงการของฉันทำงานนี่คือข้อผิดพลาดของฉัน: การอ้างอิงวัตถุไม่ได้ถูกตั้งค่าเป็นอินสแตนซ์ของวัตถุ


25
การแปลงชนิดข้อมูล datetime2 เป็นชนิดข้อมูล datetime ทำให้ค่าอยู่นอกช่วง
ฉันมี DataTable กับ 5 คอลัมน์ที่แถวจะถูกกรอกข้อมูลแล้วบันทึกลงในฐานข้อมูลผ่านการทำธุรกรรม ขณะบันทึกข้อผิดพลาดจะถูกส่งกลับ: การแปลงชนิดข้อมูล datetime2 เป็นชนิดข้อมูล datetime ทำให้ค่าอยู่นอกช่วง มันบอกเป็นนัย ๆ ว่าการอ่านข้อมูลของฉันมีประเภทDateTime2และฐานข้อมูลของฉัน a DateTime; ว่าเป็นสิ่งที่ผิด. คอลัมน์วันที่ถูกตั้งค่าเป็นDateTimeเช่นนี้: new DataColumn("myDate", Type.GetType("System.DateTime")) คำถาม สิ่งนี้สามารถแก้ไขได้ในรหัสหรือสิ่งที่จะต้องมีการเปลี่ยนแปลงในระดับฐานข้อมูล?

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