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

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

6
แปลง Newtonsoft.Json.Linq.JArray เป็นรายการประเภทวัตถุเฉพาะ
{Newtonsoft.Json.Linq.JArray}ฉันมีตัวแปรต่อไปนี้ประเภท properties["Value"] {[ { "Name": "Username", "Selected": true }, { "Name": "Password", "Selected": true } ]} สิ่งที่ฉันต้องการจะประสบความสำเร็จคือการแปลงนี้เพื่อList<SelectableEnumItem>ที่SelectableEnumItemเป็นชนิดที่ต่อไปนี้: public class SelectableEnumItem { public string Name { get; set; } public bool Selected { get; set; } } ฉันค่อนข้างใหม่สำหรับการเขียนโปรแกรมและฉันไม่แน่ใจว่ามันเป็นไปได้ ความช่วยเหลือเกี่ยวกับตัวอย่างการทำงานใด ๆ จะได้รับการชื่นชมอย่างมาก
236 c#  json.net 

15
จะสร้างและตรวจสอบความถูกต้องของรหัสลิขสิทธิ์ซอฟต์แวร์ได้อย่างไร
ขณะนี้ฉันมีส่วนร่วมในการพัฒนาผลิตภัณฑ์ (พัฒนาใน C #) ที่จะสามารถดาวน์โหลดและติดตั้งได้ฟรี แต่ในเวอร์ชันที่ จำกัด มาก ในการเข้าถึงคุณลักษณะทั้งหมดที่ผู้ใช้ต้องจ่ายค่าธรรมเนียมใบอนุญาตและรับรหัส คีย์นั้นจะถูกป้อนเข้าสู่แอปพลิเคชันเพื่อ "ปลดล็อก" เวอร์ชันเต็ม เช่นเดียวกับการใช้คีย์ใบอนุญาตแบบปกติฉันสงสัยว่า: นั่นเป็นวิธีที่มักจะแก้ไขได้อย่างไร ฉันจะสร้างคีย์ได้อย่างไรและจะตรวจสอบความถูกต้องของแอปพลิเคชันได้อย่างไร ฉันจะหลีกเลี่ยงการมีรหัสการเผยแพร่บนอินเทอร์เน็ตและใช้โดยผู้อื่นที่ไม่ได้ชำระค่าใบอนุญาตได้อย่างไร (รหัสที่โดยทั่วไปไม่ใช่ "ของพวกเขา") ฉันเดาว่าฉันควรผูกกุญแจไว้กับเวอร์ชันของแอปพลิเคชันอย่างใดด้วยดังนั้นจึงเป็นไปได้ที่จะคิดค่าบริการสำหรับคีย์ใหม่ในเวอร์ชันฟีเจอร์ มีอะไรอีกที่ฉันควรคิดถึงในสถานการณ์นี้
236 c#  license-key 

5
วิธีการส่งพารามิเตอร์ไปยัง Activator.CreateInstance <T> ()
ฉันต้องการสร้างตัวอย่างของประเภทที่ฉันระบุในวิธีการทั่วไปที่ฉันมี ประเภทนี้มีคอนสตรัคเตอร์ที่โอเวอร์โหลดจำนวนมาก ฉันต้องการที่จะสามารถส่งผ่านข้อโต้แย้งไปยังผู้สร้าง แต่ Activator.CreateInstance&lt;T&gt;() ไม่เห็นว่ามีตัวเลือกนี้ มีวิธีอื่นที่จะทำหรือไม่

7
วิธีการแยกคุณสมบัติออกจาก Json Serialization
ฉันมีคลาส DTO ที่ฉันเป็นอันดับ Json.Serialize(MyClass) ฉันจะยกเว้นทรัพย์สินสาธารณะของมันได้อย่างไร (มันจะต้องเป็นสาธารณะในขณะที่ฉันใช้มันในรหัสของฉันที่อื่น)
235 c#  json 

8
ทำไมบูลีนถึงเอาท์พุท“ จริง” และไม่“ จริง”
true.ToString() false.toString(); Output: True False มีเหตุผลที่ถูกต้องหรือไม่ที่จะเป็น "จริง" และไม่ใช่ "จริง"? มันจะหยุดลงเมื่อเขียน XML เป็นประเภทบูลีนของ XML เป็นตัวพิมพ์เล็กและไม่สามารถใช้ร่วมกับ C # ของจริง / เท็จ (ไม่แน่ใจเกี่ยวกับ CLS แม้ว่า) ปรับปรุง นี่เป็นวิธีที่แฮ็คอย่างมากของฉันในการรับมันใน C # (สำหรับใช้กับ XML) internal static string ToXmlString(this bool b) { return b.ToString().ToLower(); } แน่นอนว่าเพิ่มวิธีอีก 1 วิธีลงในสแต็ก แต่ลบ ToLowers () ทุกที่
235 c#  .net  boolean 

4
วิธีการเพิ่มรายการใหม่หรืออัปเดตรายการที่มีอยู่ในพจนานุกรม
ในบางรหัสเดิมฉันได้เห็นวิธีการต่อไปนี้เพื่ออำนวยความสะดวกในการเพิ่มรายการค่าคีย์ใหม่หรือการปรับปรุงค่าถ้าคีย์มีอยู่แล้ว วิธีที่ 1 (รหัสดั้งเดิม) public static void CreateNewOrUpdateExisting&lt;TKey, TValue&gt;( this IDictionary&lt;TKey, TValue&gt; map, TKey key, TValue value) { if (map.ContainsKey(key)) { map[key] = value; } else { map.Add(key, value); } } แม้ว่าฉันได้ตรวจสอบว่าmap[key]=value ทำหน้าที่เดียวกัน นั่นคือวิธีนี้สามารถแทนที่ด้วยวิธีที่ 2 ด้านล่าง วิธีที่ 2 public static void CreateNewOrUpdateExisting&lt;TKey, TValue&gt;( this IDictionary&lt;TKey, TValue&gt; map, TKey key, TValue …
235 c#  dictionary 

2
เหตุใดจึงเร็วกว่าเพื่อตรวจสอบว่าพจนานุกรมมีรหัสหรือไม่แทนที่จะตรวจพบข้อยกเว้นในกรณีที่ไม่มี
ลองนึกภาพรหัส: public class obj { // elided } public static Dictionary&lt;string, obj&gt; dict = new Dictionary&lt;string, obj&gt;(); วิธีที่ 1 public static obj FromDict1(string name) { if (dict.ContainsKey(name)) { return dict[name]; } return null; } วิธีที่ 2 public static obj FromDict2(string name) { try { return dict[name]; } catch (KeyNotFoundException) { …

6
แบบสอบถาม LINQ เพื่อเลือกห้าอันดับแรก
ฉันมีคำสั่ง LINQ: var list = from t in ctn.Items where t.DeliverySelection == true &amp;&amp; t.Delivery.SentForDelivery == null orderby t.Delivery.SubmissionDate select t; ฉันจะแก้ไขเคียวรีนี้เพื่อเลือกผลลัพธ์ห้ารายการจากฐานข้อมูลได้อย่างไร
234 c#  linq 

11
การแปลงประเภททั่วไปจากสตริง
ฉันมีคลาสที่ฉันต้องการใช้เพื่อเก็บ "คุณสมบัติ" สำหรับคลาสอื่น คุณสมบัติเหล่านี้มีชื่อและค่า นึกคิดสิ่งที่ฉันต้องการคือการสามารถพิมพ์เพิ่มคุณสมบัติที่เพื่อให้ "ค่า" ที่ส่งคืนนั้นเป็นประเภทที่ฉันต้องการ ประเภทควรเป็นแบบดั้งเดิม คลาสนี้คลาสย่อยเป็นคลาสนามธรรมซึ่งโดยทั่วไปจะเก็บชื่อและค่าเป็นสตริง แนวคิดที่ว่าคลาสย่อยนี้จะเพิ่มความปลอดภัยบางประเภทให้กับคลาสฐาน (รวมทั้งช่วยฉันในการแปลงบางส่วน) ดังนั้นฉันได้สร้างชั้นเรียนซึ่งเป็น (ประมาณ) นี้: public class TypedProperty&lt;DataType&gt; : Property { public DataType TypedValue { get { // Having problems here! } set { base.Value = value.ToString();} } } ดังนั้นคำถามคือ: มีวิธี "ทั่วไป" ในการแปลงจากสตริงกลับเป็นดั้งเดิม? ฉันไม่พบอินเทอร์เฟซทั่วไปที่เชื่อมโยงการแปลงทั่วกระดาน (เช่นITryParsableน่าจะเหมาะอย่างยิ่ง!)

2
ความแตกต่างระหว่างการเขียนโปรแกรมแบบอะซิงโครนัสและมัลติเธรดคืออะไร?
ฉันคิดว่ามันเหมือนกัน - เขียนโปรแกรมที่แบ่งงานระหว่างโปรเซสเซอร์ (บนเครื่องที่มีโปรเซสเซอร์ 2+) จากนั้นฉันก็อ่านสิ่งนี้ซึ่งพูดว่า: วิธีการแบบอะซิงก์มีจุดประสงค์เพื่อให้ไม่มีการบล็อก นิพจน์ที่รออยู่ในเมธอด async จะไม่บล็อกเธรดปัจจุบันในขณะที่งานที่รออยู่กำลังทำงานอยู่ แต่นิพจน์จะลงทะเบียนส่วนที่เหลือของวิธีเป็นการต่อเนื่องและส่งกลับการควบคุมไปยังผู้โทรของวิธีการแบบอะซิงก์ คำหลักแบบ async และ waitit จะไม่ทำให้เกิดการสร้างเธรดเพิ่มเติม เมธอด Async ไม่ต้องการมัลติเธรดเนื่องจากเมธอด async ไม่ทำงานบนเธรดของตัวเอง วิธีการทำงานกับบริบทการซิงโครไนซ์ปัจจุบันและใช้เวลาในเธรดเฉพาะเมื่อวิธีการใช้งานอยู่ คุณสามารถใช้ Task.Run เพื่อย้ายงานที่เชื่อมโยงกับ CPU ไปยังเธรดพื้นหลังได้ แต่เธรดพื้นหลังไม่ได้ช่วยกระบวนการที่รอให้ผลลัพธ์พร้อมใช้งาน และฉันสงสัยว่ามีคนสามารถแปลเป็นภาษาอังกฤษให้ฉันได้หรือไม่ ดูเหมือนว่าจะแยกความแตกต่างระหว่าง asyncronicity (นั่นคือคำ?) และการทำเกลียวและบอกเป็นนัยว่าคุณสามารถมีโปรแกรมที่มีงานแบบอะซิงโครนัส แต่ไม่มีมัลติเธรด ตอนนี้ฉันเข้าใจความคิดของงานอะซิงโครนัสเช่นตัวอย่างใน pg 467 ของC #ของ Jon Skeet ในความลึก, รุ่นที่สาม async void DisplayWebsiteLength ( object sender, EventArgs …


30
อ่านไฟล์ Excel จาก C #
ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ มีไลบรารีโอเพนซอร์สหรือเปล่าเพื่ออ่านไฟล์ Excel (.xls) โดยตรงจากโปรแกรม C # หรือไม่ ไม่จำเป็นต้องมีความแฟนซีเพียงแค่เลือกแผ่นงานและอ่านข้อมูลเป็นสตริง ถึงตอนนี้ฉันได้ใช้ฟังก์ชั่นข้อความส่งออกเป็น Unicode ของ Excel และแยกไฟล์ (คั่นด้วยแท็บ) ผลลัพธ์ แต่ฉันต้องการที่จะกำจัดขั้นตอนด้วยตนเอง
233 c#  .net  excel  ms-office 

2
เหตุใดการประมวลผลอาร์เรย์ที่เรียงลำดับจึงช้ากว่าอาร์เรย์ที่ไม่เรียงลำดับ
ฉันมีรายการTuple&lt;long,long,string&gt;วัตถุที่สร้างขึ้นแบบสุ่มจำนวน 500,000 รายการซึ่งฉันกำลังค้นหา "ระหว่าง" อย่างง่าย: var data = new List&lt;Tuple&lt;long,long,string&gt;&gt;(500000); ... var cnt = data.Count(t =&gt; t.Item1 &lt;= x &amp;&amp; t.Item2 &gt;= x); เมื่อฉันสร้างอาเรย์แบบสุ่มของฉันและทำการค้นหาค่าที่สร้างแบบสุ่ม 100 ค่าxการค้นหาจะเสร็จสมบูรณ์ในเวลาประมาณสี่วินาที การรู้ถึงสิ่งมหัศจรรย์ที่ยิ่งใหญ่ที่การเรียงลำดับมีผลต่อการค้นหาแต่ฉันตัดสินใจที่จะเรียงลำดับข้อมูลของฉัน - ก่อนItem1แล้วตามด้วยItem2และสุดท้ายItem3- ก่อนที่จะทำการค้นหา 100 ครั้ง ฉันคาดว่ารุ่นที่เรียงไว้จะทำงานได้เร็วขึ้นเล็กน้อยเนื่องจากการคาดเดาของสาขา: ความคิดของฉันคือเมื่อเราไปถึงจุดที่Item1 == xการตรวจสอบเพิ่มเติมทั้งหมดt.Item1 &lt;= xจะทำนายสาขาอย่างถูกต้องว่า "ไม่รับ" เร่งส่วนหางของ ค้นหา. ฉันประหลาดใจมากการค้นหาใช้เวลานานเป็นสองเท่าในอาร์เรย์ที่เรียงลำดับ ! ฉันลองสลับไปมาตามลำดับที่ฉันรันการทดลองของฉันและใช้เมล็ดพันธุ์ที่แตกต่างกันสำหรับตัวสร้างตัวเลขสุ่ม แต่ผลที่ออกมานั้นเหมือนกัน: การค้นหาในอาเรย์ที่ไม่เรียงลำดับนั้นวิ่งเร็วกว่าการค้นหาในอาเรย์เดียวกันเกือบสองเท่า เรียง! ใครบ้างมีคำอธิบายที่ดีของผลแปลก ๆ นี้? …


7
ผ่านวัตถุโดยการอ้างอิงหรือค่าใน C #
ใน C # ฉันคิดเสมอว่าตัวแปรที่ไม่ใช่ดั้งเดิมถูกส่งผ่านโดยการอ้างอิงและค่าดั้งเดิมที่ส่งผ่านตามค่า ดังนั้นเมื่อผ่านไปยังวิธีการใด ๆ ที่ไม่ใช่วัตถุดั้งเดิมสิ่งที่ทำกับวัตถุในวิธีการจะมีผลต่อวัตถุที่ถูกส่งผ่าน (สิ่ง C # 101) อย่างไรก็ตามฉันได้สังเกตเห็นว่าเมื่อฉันส่งวัตถุ System.Drawing.Image ว่าดูเหมือนจะไม่เป็นเช่นนั้น? ถ้าฉันส่งวัตถุ system.drawing.image ไปยังวิธีอื่นแล้วโหลดรูปภาพไปยังวัตถุนั้นให้ปล่อยให้วิธีนั้นพ้นขอบเขตแล้วกลับไปที่วิธีการเรียกใช้อิมเมจนั้นจะไม่ถูกโหลดบนวัตถุดั้งเดิม? ทำไมนี้

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