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

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

3
รอคอย vs Task.Wait - Deadlock?
ฉันไม่เข้าใจความแตกต่างระหว่างและTask.Waitawait ฉันมีบางอย่างที่คล้ายกับฟังก์ชั่นต่อไปนี้ในบริการ ASP.NET WebAPI: public class TestController : ApiController { public static async Task<string> Foo() { await Task.Delay(1).ConfigureAwait(false); return ""; } public async static Task<string> Bar() { return await Foo(); } public async static Task<string> Ros() { return await Bar(); } // GET api/test public IEnumerable<string> Get() { Task.WaitAll(Enumerable.Range(0, 10).Select(x …

23
Generic TryParse
ฉันพยายามสร้างส่วนขยายทั่วไปที่ใช้ 'TryParse' เพื่อตรวจสอบว่าสตริงเป็นประเภทที่กำหนดหรือไม่: public static bool Is<T>(this string input) { T notUsed; return T.TryParse(input, out notUsed); } สิ่งนี้จะไม่รวบรวมเนื่องจากไม่สามารถแก้ไขสัญลักษณ์ 'TryParse' ดังที่ฉันเข้าใจ 'TryParse' ไม่ได้เป็นส่วนหนึ่งของส่วนต่อประสานใด ๆ เป็นไปได้ที่จะทำเลย? ปรับปรุง: ใช้คำตอบด้านล่างฉันมาด้วย: public static bool Is<T>(this string input) { try { TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(input); } catch { return false; } return true; } มันใช้งานได้ค่อนข้างดี แต่ฉันคิดว่าการใช้ข้อยกเว้นในทางนั้นจะไม่เหมาะสมกับฉัน Update2: แก้ไขเพื่อส่งผ่านประเภทแทนที่จะใช้ generics: …
196 c#  generics  tryparse 


9
วิธีการแปลงผลลัพธ์ linq เป็น HashSet หรือ HashedSet
ฉันมีคุณสมบัติในคลาสที่เป็น ISet ฉันกำลังพยายามดึงผลลัพธ์ของเคียวรี linq ลงในคุณสมบัตินั้น แต่ไม่สามารถหาวิธีทำได้ โดยทั่วไปมองหาส่วนสุดท้ายของสิ่งนี้: ISet<T> foo = new HashedSet<T>(); foo = (from x in bar.Items select x).SOMETHING; ยังสามารถทำสิ่งนี้: HashSet<T> foo = new HashSet<T>(); foo = (from x in bar.Items select x).SOMETHING;
196 c#  linq 

16
ฉันสามารถแปลงค่าสตริง C # เป็นสตริงตัวอักษรที่ใช้ Escape
ใน C # ฉันสามารถแปลงค่าสตริงเป็นตัวอักษรสตริงตามที่ฉันเห็นในโค้ดได้หรือไม่ ฉันต้องการแทนที่แท็บบรรทัดใหม่ ฯลฯ ด้วยลำดับการหลีกเลี่ยง หากรหัสนี้: Console.WriteLine(someString); ผลิต: Hello World! ฉันต้องการรหัสนี้: Console.WriteLine(ToLiteral(someString)); ผลิต: \tHello\r\n\tWorld!\r\n
196 c#  string  escaping 

3
คุณจะสร้างวิธีแบบอะซิงโครนัสใน C # ได้อย่างไร
โพสต์บล็อกทุกรายการที่ฉันอ่านจะบอกวิธีใช้อะซิงโครนัสเมธอดใน C # แต่ด้วยเหตุผลแปลก ๆ บางอย่างไม่เคยอธิบายวิธีการสร้างวิธีอะซิงโครนัสของคุณเองเพื่อบริโภค ดังนั้นฉันมีรหัสนี้ทันทีที่ใช้วิธีการของฉัน: private async void button1_Click(object sender, EventArgs e) { var now = await CountToAsync(1000); label1.Text = now.ToString(); } และฉันเขียนวิธีนี้คือCountToAsync: private Task<DateTime> CountToAsync(int num = 1000) { return Task.Factory.StartNew(() => { for (int i = 0; i < num; i++) { Console.WriteLine("#{0}", i); } }).ContinueWith(x …
196 c#  async-await  c#-5.0 


4
async C # 5 CTP: ทำไม“ สถานะ” ภายในถูกตั้งค่าเป็น 0 ในรหัสที่สร้างขึ้นก่อนการโทร EndAwait
เมื่อวานนี้ฉันได้พูดคุยเกี่ยวกับคุณลักษณะใหม่ของ "async" C โดยเฉพาะอย่างยิ่งการตรวจสอบสิ่งที่สร้างรหัสดูเหมือนและthe GetAwaiter()/ BeginAwait()/ EndAwait()โทร เราดูรายละเอียดที่เครื่องสถานะที่สร้างโดยคอมไพเลอร์ C # และมีสองด้านที่เราไม่เข้าใจ: เหตุใดคลาสที่สร้างขึ้นจึงมีDispose()เมธอดและ$__disposingตัวแปรซึ่งไม่เคยปรากฏที่จะใช้ (และคลาสไม่ได้นำไปใช้IDisposable) สาเหตุที่stateตัวแปรภายในถูกตั้งค่าเป็น 0 ก่อนการเรียกใด ๆEndAwait()เมื่อโดยปกติ 0 ปรากฏว่าหมายถึง "นี่คือจุดเริ่มต้น" ฉันสงสัยว่าจุดแรกสามารถตอบได้โดยทำสิ่งที่น่าสนใจมากขึ้นในวิธีการ async ถึงแม้ว่าหากใครมีข้อมูลเพิ่มเติมฉันก็ยินดีที่จะได้ยิน อย่างไรก็ตามคำถามนี้เกี่ยวกับประเด็นที่สองมากกว่า นี่คือตัวอย่างโค้ดที่ง่ายมาก: using System.Threading.Tasks; class Test { static async Task<int> Sum(Task<int> t1, Task<int> t2) { return await t1 + await t2; } } ... และนี่คือรหัสที่ได้รับการสร้างขึ้นสำหรับMoveNext()วิธีการที่ใช้เครื่องรัฐ สิ่งนี้ถูกคัดลอกโดยตรงจาก Reflector …
195 c#  asynchronous  c#-5.0 


10
สมาชิก '<method>' ไม่สามารถเข้าถึงได้ด้วยการอ้างอิงอินสแตนซ์
ฉันกำลังเข้าสู่ C # และฉันมีปัญหานี้: namespace MyDataLayer { namespace Section1 { public class MyClass { public class MyItem { public static string Property1{ get; set; } } public static MyItem GetItem() { MyItem theItem = new MyItem(); theItem.Property1 = "MyValue"; return theItem; } } } } ฉันมีรหัสนี้ใน UserControl: using MyDataLayer.Section1; public …
195 c#  asp.net 

7
ทำการแทรกและอัพเดตด้วย Dapper
ฉันสนใจที่จะใช้ Dapper - แต่จากสิ่งที่ฉันสามารถบอกได้ก็รองรับ Query และ Execute เท่านั้น ฉันไม่เห็นว่า Dapper มีวิธีการใส่และอัปเดตวัตถุ ระบุว่าโครงการของเรา (โครงการส่วนใหญ่?) จำเป็นต้องทำการแทรกและอัปเดตแนวปฏิบัติที่ดีที่สุดสำหรับการแทรกและอัปเดตควบคู่ไปกับผู้ทำแผนที่คืออะไร โดยเฉพาะอย่างยิ่งเราจะไม่ต้องหันไปใช้วิธีการสร้างพารามิเตอร์ของ ADO.NET เป็นต้น คำตอบที่ดีที่สุดที่ฉันสามารถหาได้ในตอนนี้คือใช้ LinqToSQL สำหรับแทรกและอัพเดต มีคำตอบที่ดีกว่านี้ไหม?
195 c#  orm  dapper 

8
มีตัวดำเนินการเลขชี้กำลังใน C # หรือไม่
ตัวอย่างเช่นมีโอเปอเรเตอร์ที่จะจัดการกับสิ่งนี้หรือไม่? float Result, Number1, Number2; Number1 = 2; Number2 = 2; Result = Number1 (operator) Number2; ในอดีตที่ผ่านมา^ผู้ประกอบการได้ทำหน้าที่เป็นผู้ดำเนินการชี้แจงในภาษาอื่น ๆ แต่ใน C # มันเป็นผู้ประกอบการบิตที่ชาญฉลาด ฉันต้องเขียนลูปหรือรวมเนมสเปซอื่นเพื่อจัดการการดำเนินการเอ็กซ์โปเนนเชียลหรือไม่? ถ้าเป็นเช่นนั้นฉันจะจัดการการดำเนินการเอ็กซ์โปเนนเชียลโดยใช้ที่ไม่ใช่จำนวนเต็มได้อย่างไร

5
LINQ เพื่ออ่าน XML
ฉันได้รับไฟล์ XML นี้: &lt;root&gt; &lt;level1 name="A"&gt; &lt;level2 name="A1" /&gt; &lt;level2 name="A2" /&gt; &lt;/level1&gt; &lt;level1 name="B"&gt; &lt;level2 name="B1" /&gt; &lt;level2 name="B2" /&gt; &lt;/level1&gt; &lt;level1 name="C" /&gt; &lt;/root&gt; ใครสามารถให้รหัส C # แก่ฉันโดยใช้ LINQ วิธีที่ง่ายที่สุดในการพิมพ์ผลลัพธ์นี้: (สังเกตช่องว่างเพิ่มเติมถ้ามันเป็นlevel2โหนด) A A1 A2 B B1 B2 C ขณะนี้ฉันได้รับรหัสนี้: XDocument xdoc = XDocument.Load("data.xml")); var lv1s = from lv1 …
194 c#  xml  linq  linq-to-xml 

30
เพิ่มช่องว่างก่อนตัวพิมพ์ใหญ่
กำหนดสตริง "ThisStringHasNoSpacesButItDoesHaveCapitals" เป็นวิธีที่ดีที่สุดในการเพิ่มช่องว่างก่อนตัวพิมพ์ใหญ่อะไร ดังนั้นสตริงสุดท้ายจะเป็น "สตริงนี้ไม่มีช่องว่าง แต่จะมีตัวพิมพ์ใหญ่" นี่คือความพยายามของฉันกับ RegEx System.Text.RegularExpressions.Regex.Replace(value, "[A-Z]", " $0")
194 c#  regex  string 

3
“ Service Include” ในไฟล์ csproj มีไว้เพื่ออะไร?
ในโซลูชัน C # ฉันเพิ่มโครงการที่มีอยู่ หลังจากนั้น Visual Studio ได้เพิ่มรายการต่อไปนี้ในไฟล์. csproj อื่น ๆ : &lt;ItemGroup&gt; &lt;Service Include="{B4F97281-0DBD-4835-9ED8-7DFB966E87FF}" /&gt; &lt;/ItemGroup&gt; มีไว้เพื่ออะไร ฉันสามารถลบมันได้หรือไม่

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