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

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

10
ตัวดำเนินการ C # เกินสำหรับ `+ =`?
ฉันพยายามทำโอเปอเรเตอร์โอเวอร์โหลด+=แต่ทำไม่ได้ ฉันสามารถทำให้ตัวดำเนินการเกินพิกัดสำหรับ+. มาได้ยังไง? แก้ไข เหตุผลนี้ใช้ไม่ได้คือฉันมีคลาส Vector (พร้อมช่อง X และ Y) ลองพิจารณาตัวอย่างต่อไปนี้ vector1 += vector2; หากตัวดำเนินการของฉันโอเวอร์โหลดถูกตั้งค่าเป็น: public static Vector operator +(Vector left, Vector right) { return new Vector(right.x + left.x, right.y + left.y); } จากนั้นผลลัพธ์จะไม่ถูกเพิ่มลงใน vector1 แต่ vector1 จะกลายเป็น Vector ใหม่โดยการอ้างอิงเช่นกัน

7
“ ชั้นเรียนพิเศษ” คืออะไร?
หลังจากล้มเหลวในการรวบรวมสิ่งต่อไปนี้: public class Gen<T> where T : System.Array { } ด้วยข้อผิดพลาด ข้อ จำกัด ไม่สามารถเป็นคลาสพิเศษได้ `` System.Array '' ผมเริ่มสงสัยว่าสิ่งที่เป็น "การเรียนพิเศษ"? ผู้คนมักจะได้รับข้อผิดพลาดประเภทเดียวกันเมื่อพวกเขาระบุSystem.Enumในข้อ จำกัด ทั่วไป ผมได้รับผลเช่นเดียวกันกับSystem.Object, System.Delegate, System.MulticastDelegateและSystem.ValueTypeมากเกินไป มีมากกว่านี้ไหม ฉันไม่พบข้อมูลใด ๆ เกี่ยวกับ "ชั้นเรียนพิเศษ" ใน C # นอกจากนี้สิ่งที่เป็นพิเศษเกี่ยวกับการเรียนที่เราไม่สามารถใช้พวกเขาเป็นข้อ จำกัด ประเภททั่วไป?

12
Visual Studio 2015 แบ่งข้อยกเว้นที่ไม่สามารถจัดการได้ไม่ทำงาน
Visual Studio เคยมีช่องทำเครื่องหมายเฉพาะสำหรับ "Break on Un-handled except" ในปี 2558 สิ่งนี้ถูกลบ (หรือย้ายไปที่ไหนสักแห่งที่ฉันหาไม่เจอ) ดังนั้นตอนนี้โครงการที่แปลงแล้วของฉันจะไม่พังอีกต่อไปหากฉันไม่สามารถจัดหาตัวจัดการข้อยกเว้นระดับผู้ใช้ ฉันไม่ต้องการทำลาย "ข้อยกเว้น" ทั้งหมดเพราะฉันจัดการเฉพาะ ในกรณีที่ฉันไม่สามารถจัดหาเครื่องจัดการเฉพาะได้ ตอนนี้รหัสของฉันเพิ่งออกจากขั้นตอนปัจจุบันและดำเนินการต่อในตำแหน่งสแต็กการโทรถัดไปไม่ดี ใครรู้วิธีเอาคืนใน Visual Studio 2015 บ้าง? ฉันเพิ่งอัปเกรดเป็นฉบับชุมชนเมื่อวานนี้

2
nameof () ได้รับการประเมินตามเวลาคอมไพล์หรือไม่
ใน C # 6 คุณสามารถใช้ตัวnameof()ดำเนินการเพื่อรับสตริงที่มีชื่อของตัวแปรหรือประเภท สิ่งนี้ได้รับการประเมินในเวลาคอมไพล์หรือรันไทม์ผ่าน Roslyn API บางตัว?
114 c#  roslyn  c#-6.0 

7
ลำดับของฟังก์ชัน LINQ มีความสำคัญหรือไม่?
โดยทั่วไปตามคำถามระบุว่า ... ลำดับของฟังก์ชัน LINQ มีความสำคัญในแง่ของประสิทธิภาพหรือไม่? เห็นได้ชัดว่าผลลัพธ์จะต้องเหมือนเดิม ... ตัวอย่าง: myCollection.OrderBy(item => item.CreatedDate).Where(item => item.Code > 3); myCollection.Where(item => item.Code > 3).OrderBy(item => item.CreatedDate); ทั้งสองให้ผลลัพธ์เดียวกันกับฉัน แต่อยู่ในลำดับ LINQ ที่แตกต่างกัน ฉันตระหนักดีว่าการจัดเรียงรายการบางรายการใหม่จะทำให้ได้ผลลัพธ์ที่แตกต่างกันและฉันไม่ได้กังวลเกี่ยวกับสิ่งเหล่านั้น สิ่งที่ฉันกังวลหลักคือการรู้ว่าในการได้ผลลัพธ์เดียวกันการสั่งซื้ออาจส่งผลต่อประสิทธิภาพหรือไม่ และไม่ใช่แค่ในการโทร 2 LINQ ที่ฉันโทร (OrderBy, Where) แต่ในการโทร LINQ ใด ๆ
114 c#  performance  linq 

1
ข้อผิดพลาด Reactive Extensions บน Windows Phone
คอมไพล์ด้วยVS 2012ประเภทโปรเจ็กต์WP 8.0รหัสต่อไปนี้จะล้มเหลวหากไม่ได้แนบดีบักเกอร์ อย่างไรก็ตามหากไม่ได้แนบดีบักเกอร์การเพิ่มประสิทธิภาพคอมไพเลอร์จะทำลายโค้ดภายในCrash()- ดูความคิดเห็นในโค้ด การทดสอบบนLumia 1520 (8.1)และLumia 630 (8.0) มีความคิดว่าเหตุใดจึงเกิดขึ้น public partial class MainPage : PhoneApplicationPage { public MainPage() { InitializeComponent(); Button.Tap += (sender, args) => new A<B, string>(new B(), "string").Crash(); } } public class B { public void Foo<T>(T val) { } } public class A<T1, T2> where …

8
ฉันจะค้นหาองค์ประกอบเฉพาะในรายการ <T> ได้อย่างไร
แอปพลิเคชันของฉันใช้รายการดังนี้: List&lt;MyClass&gt; list = new List&lt;MyClass&gt;(); เมื่อใช้AddวิธีMyClassนี้จะเพิ่มอินสแตนซ์อื่นในรายการ MyClass ให้วิธีการต่อไปนี้: public void SetId(String Id); public String GetId(); ฉันจะค้นหาอินสแตนซ์เฉพาะของMyClassการใช้GetIdวิธีนี้ได้อย่างไร ฉันรู้ว่ามีFindวิธีนี้ แต่ฉันไม่รู้ว่าจะใช้ได้หรือไม่!
114 c#  list  properties  find 

9
ย่อขนาดแอปลงในถาดระบบ
ฉันมีแอพฟอร์ม Windows ที่ขับเคลื่อนโดย C # และ Visual Studio 2010 ฉันจะย่อขนาดแอปลงในถาดระบบ (ไม่ใช่แถบงาน) จากนั้นนำกลับมาเมื่อดับเบิลคลิกในถาดระบบได้อย่างไร ความคิดใด นอกจากนี้ฉันจะสร้างเมนูในไอคอนในถาดระบบได้อย่างไรและเมื่อฉันคลิกขวามันจะแสดงเมนูเช่นเข้าสู่ระบบ, ยกเลิกการเชื่อมต่อ, เชื่อมต่ออะไรทำนองนั้น นอกจากนี้ยังมีวิธีใดบ้างที่จะแสดงเหมือนลูกโป่งที่โผล่ขึ้นมาจากถาดระบบ? PS: ฉันได้เพิ่ม alertIcon แล้ว แต่ฉันไม่รู้วิธีใช้
114 c#  windows  winforms 

10
จะรีเซ็ตตัวจับเวลาใน C # ได้อย่างไร?
มีสามTimerชั้นเรียนที่ฉันรู้, System.Threading.Timer, System.Timers.TimerและSystem.Windows.Forms.Timerแต่ไม่มีของเหล่านี้มี.Reset()ฟังก์ชั่นซึ่งจะรีเซ็ตเวลาที่ผ่านไปในปัจจุบันให้เป็น 0 มีคลาส BCL ที่มีฟังก์ชันนี้หรือไม่? มีวิธีที่ไม่แฮ็กหรือไม่? (ฉันคิดว่าการเปลี่ยนการ จำกัด เวลาอาจรีเซ็ตได้) ลองคิดดูว่าการจะนำTimerคลาสที่มีฟังก์ชันนี้กลับมาใช้ใหม่นั้นยากแค่ไหนหรือจะทำอย่างไรให้น่าเชื่อถือกับหนึ่งในคลาส BCL
114 c#  timer 

3
ไม่สามารถส่งวิธีการขยายแบบไดนามิกได้
ฉันต้องการมี DropDownListFor ใน MVC @foreach (var item in Model) { @Html.DropDownListFor(modelItem =&gt; item.TitleIds, new SelectList(ViewBag.TitleNames as System.Collections.IEnumerable, "TitleId", "Title.TitleText"), "No: " + ViewBag.MagNo, new { id = "TitleIds" }) } ในตัวควบคุม public ActionResult ArticleList(int id) { ArticleWriter_ViewModel viewModel = new ArticleWriter_ViewModel(); Func&lt;IQueryable&lt;NumberTitle&gt;, IOrderedQueryable&lt;NumberTitle&gt;&gt; orderByFunc = null; Expression&lt;Func&lt;NumberTitle, bool&gt;&gt; filterExpr = …

16
รูปแบบเพื่อหลีกเลี่ยงการลองจับบล็อกซ้อนกัน?
พิจารณาสถานการณ์ที่ฉันมีสามวิธี (หรือมากกว่า) ในการคำนวณซึ่งแต่ละวิธีอาจล้มเหลวโดยมีข้อยกเว้น ในการพยายามคำนวณแต่ละครั้งจนกว่าเราจะพบสิ่งที่สำเร็จฉันได้ดำเนินการดังต่อไปนี้: double val; try { val = calc1(); } catch (Calc1Exception e1) { try { val = calc2(); } catch (Calc2Exception e2) { try { val = calc3(); } catch (Calc3Exception e3) { throw new NoCalcsWorkedException(); } } } มีรูปแบบใดบ้างที่ได้รับการยอมรับซึ่งประสบความสำเร็จในวิธีที่ดีกว่านี้? แน่นอนว่าฉันสามารถสรุปการคำนวณแต่ละรายการด้วยวิธีตัวช่วยซึ่งส่งคืนค่าว่างเมื่อเกิดความล้มเหลวจากนั้นใช้ตัว??ดำเนินการ แต่มีวิธีการทำเช่นนี้โดยทั่วไปหรือไม่ (กล่าวคือโดยไม่ต้องเขียนวิธีการช่วยเหลือสำหรับแต่ละวิธีที่ฉันต้องการใช้ )? ฉันคิดเกี่ยวกับการเขียนวิธีการคงที่โดยใช้ชื่อสามัญซึ่งรวมวิธีการใด ๆ ในการลอง …

3
รับ TransactionScope เพื่อทำงานกับ async / await
ฉันกำลังพยายามรวมasync/ awaitเข้ากับบัสบริการของเรา ผมดำเนินการSingleThreadSynchronizationContextบนพื้นฐานของตัวอย่างนี้http://blogs.msdn.com/b/pfxteam/archive/2012/01/20/10259049.aspx TransactionScopeและทำงานดียกเว้นสิ่งหนึ่งที่: ฉันรอคอยสิ่งที่อยู่ข้างในTransactionScopeและมันก็ทำลายTransactionScope. TransactionScopeไม่ได้ดูเหมือนว่าจะเล่นดีกับasync/ อย่างแน่นอนเพราะมันเก็บสิ่งในหัวข้อการใช้await ThreadStaticAttributeฉันได้รับข้อยกเว้นนี้: "TransactionScope ซ้อนไม่ถูกต้อง" ฉันพยายามบันทึกTransactionScopeข้อมูลก่อนจัดคิวงานและกู้คืนก่อนที่จะรัน แต่ดูเหมือนว่าจะไม่เปลี่ยนแปลงอะไรเลย และTransactionScopeโค้ดก็เป็นระเบียบดังนั้นจึงยากที่จะเข้าใจว่าเกิดอะไรขึ้น มีวิธีทำให้ใช้งานได้หรือไม่? มีทางเลือกอื่นให้TransactionScopeหรือไม่?

5
เหตุใด C # 3.0 object initializer constructor จึงเป็นตัวเลือกเสริม
ดูเหมือนว่าไวยากรณ์ของตัวเริ่มต้นออบเจ็กต์ C # 3.0 จะอนุญาตให้มีหนึ่งในการยกเว้นคู่เปิด / ปิดของวงเล็บในตัวสร้างเมื่อมีตัวสร้างที่ไม่มีพารามิเตอร์อยู่ ตัวอย่าง: var x = new XTypeName { PropA = value, PropB = value }; ตรงข้ามกับ: var x = new XTypeName() { PropA = value, PropB = value }; ฉันสงสัยว่าทำไมคู่ของวงเล็บเปิด / ปิดตัวสร้างจึงเป็นตัวเลือกที่นี่หลังจากนั้นXTypeName?

8
คลาส C # สามารถสืบทอดคุณสมบัติจากอินเทอร์เฟซได้หรือไม่?
สิ่งนี้ดูเหมือนจะบ่งบอกเป็นนัยว่า "ไม่" ซึ่งเป็นโชคร้าย. [AttributeUsage(AttributeTargets.Interface | AttributeTargets.Class, AllowMultiple = true, Inherited = true)] public class CustomDescriptionAttribute : Attribute { public string Description { get; private set; } public CustomDescriptionAttribute(string description) { Description = description; } } [CustomDescription("IProjectController")] public interface IProjectController { void Create(string projectName); } internal class ProjectController : IProjectController { …
114 c#  attributes 

8
จะอ่านค่าแอตทริบิวต์จาก XmlNode ใน C # ได้อย่างไร
สมมติว่าฉันมี XmlNode และต้องการรับค่าของแอตทริบิวต์ชื่อ "Name" ฉันจะทำเช่นนั้นได้อย่างไร? XmlTextReader reader = new XmlTextReader(path); XmlDocument doc = new XmlDocument(); XmlNode node = doc.ReadNode(reader); foreach (XmlNode chldNode in node.ChildNodes) { **//Read the attribute Name** if (chldNode.Name == Employee) { if (chldNode.HasChildNodes) { foreach (XmlNode item in node.ChildNodes) { } } } } เอกสาร XML: &lt;Root&gt; …
114 c#  .net  xml 

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