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

C # 3.0 ("C # Orcas") แนะนำส่วนขยายภาษาต่างๆที่สร้างบน C # 2.0 เพื่อรองรับการสร้างและใช้ไลบรารีคลาสสไตล์การทำงานที่มีลำดับสูงขึ้น ส่วนขยายเปิดใช้งานการสร้าง API องค์ประกอบที่มีพลังในการแสดงออกของภาษาแบบสอบถามในโดเมนเช่นฐานข้อมูลเชิงสัมพันธ์และ XML ใช้แท็กนี้หากคำถามของคุณเกี่ยวกับคุณลักษณะเฉพาะของ C # 3.0 โดยเฉพาะ มิฉะนั้นให้ใช้แท็ก C #

18
ความแตกต่าง () กับแลมบ์ดา?
ใช่ฉันมีจำนวนมากและต้องการรับค่าที่แตกต่างจากมัน ใช้มีแน่นอนวิธีขยายที่เรียกว่าSystem.Linq Distinctในกรณีง่าย ๆ มันสามารถใช้โดยไม่มีพารามิเตอร์เช่น: var distinctValues = myStringList.Distinct(); ดีและดี แต่ถ้าฉันมีจำนวนวัตถุที่ฉันต้องระบุความเท่าเทียมกันเกินพิกัดที่มีอยู่เท่านั้นคือ: var distinctValues = myCustomerList.Distinct(someEqualityComparer); อาร์กิวเมนต์เท่าเทียมกัน Comparer IEqualityComparer<T>ต้องเป็นตัวอย่างของ แน่นอนว่าฉันสามารถทำสิ่งนี้ได้ แต่มันค่อนข้างละเอียดและดูดี สิ่งที่ฉันคาดหวังก็คือโอเวอร์โหลดที่จะเอาแลมบ์ดาพูด Func <T, T, bool>: var distinctValues = myCustomerList.Distinct((c1, c2) => c1.CustomerId == c2.CustomerId); มีใครทราบบ้างไหมว่าส่วนขยายดังกล่าวมีอยู่หรือไม่ หรือฉันกำลังพลาดอะไรอยู่? หรือมีวิธีระบุ IEqualityComparer inline (ทำให้ลำบากใจฉัน) หรือไม่ ปรับปรุง ฉันพบคำตอบของ Anders Hejlsberg ต่อการโพสต์ในฟอรัม MSDN ในหัวข้อนี้ เขาพูดว่า: ปัญหาที่คุณจะพบคือเมื่อวัตถุสองตัวเปรียบเทียบกันเท่ากับพวกเขาจะต้องมีค่าส่งคืน …

30
ไม่พบไฟล์ข้อมูลเมตา '.dll'
ฉันกำลังทำงานกับโครงการ WPF, C # 3.0 และฉันได้รับข้อผิดพลาดนี้: Error 1 Metadata file 'WORK=- \Tools\VersionManagementSystem\BusinessLogicLayer\bin\Debug \BusinessLogicLayer.dll' could not be found C:\-=WORK=- \Tools \VersionManagementSystem\VersionManagementSystem\CSC VersionManagementSystem นี่คือวิธีที่ฉันอ้างอิงการควบคุมผู้ใช้ของฉัน: xmlns:vms="clr-namespace:VersionManagementSystem" <vms:SignOffProjectListing Margin="5"/> มันเกิดขึ้นหลังจากการสร้างล้มเหลวทุกครั้ง วิธีเดียวที่ฉันจะได้รับโซลูชันในการคอมไพล์คือการคอมเม้นท์การควบคุมผู้ใช้ทั้งหมดของฉันและสร้างโครงการขึ้นใหม่จากนั้นฉันก็ยกเลิกการคอมเม้นต์ผู้ใช้และทุกอย่างก็โอเค ฉันได้ตรวจสอบคำสั่งสร้างและการกำหนดค่าการอ้างอิง อย่างที่คุณเห็นมันดูเหมือนว่าจะตัดทอนเส้นทางสัมบูรณ์ของไฟล์ DLL ออกไป ... ฉันได้อ่านว่ามีข้อบกพร่องที่มีความยาว นี่เป็นปัญหาที่เป็นไปได้หรือไม่? มันน่ารำคาญมากและต้องแสดงความคิดเห็นสร้างและไม่แสดงความคิดเห็นงานสร้างกำลังน่าเบื่ออย่างยิ่ง

16
รับทุกประเภทที่ใช้อินเตอร์เฟส
ใช้การไตร่ตรองฉันจะทำให้ทุกประเภทที่ใช้อินเทอร์เฟซกับ C # 3.0 / .NET 3.5 มีโค้ดน้อยที่สุดและลดการทำซ้ำให้น้อยที่สุดได้อย่างไร นี่คือสิ่งที่ฉันต้องการเขียนใหม่: foreach (Type t in this.GetType().Assembly.GetTypes()) if (t is IMyInterface) ; //do stuff

4
เติม XDocument จาก String
ฉันกำลังทำงานกับสิ่งเล็กน้อยและฉันพยายามคิดออกว่าฉันสามารถโหลด XDocument จากสตริงได้หรือไม่ XDocument.Load()ดูเหมือนว่าจะใช้สตริงที่ส่งผ่านไปเป็นเส้นทางไปยังไฟล์ XML ทางกายภาพ ฉันต้องการลองและข้ามขั้นตอนแรกของการสร้างไฟล์ XML จริงและข้ามไปที่การเติม XDocument ความคิดใด ๆ
358 c#  xml  c#-3.0  linq-to-xml 

15
นิพจน์ C # แลมบ์ดา: ทำไมฉันจึงควรใช้
ฉันอ่านเอกสารMicrosoft Lambda Expressionอย่างรวดเร็ว ตัวอย่างประเภทนี้ช่วยให้ฉันเข้าใจได้ดีขึ้นถึง: delegate int del(int i); del myDelegate = x => x * x; int j = myDelegate(5); //j = 25 ถึงกระนั้นฉันก็ยังไม่เข้าใจว่าทำไมมันถึงเป็นนวัตกรรม มันเป็นแค่วิธีการหนึ่งที่ตายเมื่อ "ตัวแปร method" จบลงใช่ไหม เหตุใดฉันจึงควรใช้วิธีนี้แทนวิธีการจริง
309 c#  c#-3.0  lambda 

30
ลักษณะที่ยากที่สุดหรือเข้าใจผิดมากที่สุดของ LINQ คืออะไร [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องการอภิปรายการโต้แย้งการหยั่งเสียงหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ พื้นหลัง: กว่าเดือนต่อไปผมจะให้พูดคุยเกี่ยวกับสามหรืออย่างน้อยรวมทั้งในบริบทของLINQ C#ฉันต้องการทราบว่าหัวข้อใดที่ควรให้ความสนใจอย่างยุติธรรมโดยพิจารณาจากสิ่งที่ผู้คนอาจเข้าใจยากหรือสิ่งที่พวกเขาอาจรู้สึกผิด ฉันจะไม่พูดLINQถึงSQLหรือ Entity Framework โดยเฉพาะยกเว้นเป็นตัวอย่างของวิธีการสืบค้นข้อมูลที่สามารถดำเนินการจากระยะไกลโดยใช้แผนผังต้นไม้ (และปกติIQueryable) แล้วคุณพบLINQอะไรที่หนักหนาสาหัส คุณเห็นอะไรในแง่ของความเข้าใจผิด? ตัวอย่างอาจมีข้อใดข้อหนึ่งต่อไปนี้ แต่โปรดอย่า จำกัด ตัวเอง! วิธีC#การปฏิบัติเรียบเรียงแบบสอบถามการแสดงออก นิพจน์แลมบ์ดา ต้นไม้แสดงออก วิธีการขยาย ประเภทนิรนาม IQueryable รอการตัดบัญชีเทียบกับการดำเนินการทันที สตรีมมิ่ง vs การประมวลผลบัฟเฟอร์ (เช่น OrderBy ถูกเลื่อนออกไป แต่บัฟเฟอร์) พิมพ์ตัวแปรโลคัลโดยปริยาย การอ่านลายเซ็นทั่วไปที่ซับซ้อน (เช่นEnumerable.Join )
282 c#  linq  c#-3.0 

6
ใน C # Monad คืออะไร
วันนี้มีการพูดคุยกันมากมายเกี่ยวกับพระ ฉันได้อ่านบทความ / บล็อกโพสต์ไม่กี่ แต่ฉันไม่สามารถไปไกลพอกับตัวอย่างของพวกเขาเข้าใจแนวคิดอย่างเต็มที่ เหตุผลก็คือ monads เป็นแนวคิดเกี่ยวกับภาษาที่ใช้งานได้และทำให้ตัวอย่างเป็นภาษาที่ฉันไม่ได้ทำงานด้วย (เนื่องจากฉันไม่ได้ใช้ภาษาเชิงหน้าที่ในเชิงลึก) ฉันไม่สามารถเข้าใจไวยากรณ์อย่างลึกซึ้งพอที่จะติดตามบทความอย่างเต็มที่ ... แต่ฉันสามารถบอกได้ว่ามีบางสิ่งที่คุ้มค่าที่จะเข้าใจ อย่างไรก็ตามฉันรู้ C # ค่อนข้างดีรวมถึงการแสดงออกแลมบ์ดาและคุณสมบัติการทำงานอื่น ๆ ฉันรู้ว่า C # มีคุณลักษณะการทำงานบางส่วนเท่านั้นดังนั้นอาจไม่สามารถแสดง monads ใน C # ได้ อย่างไรก็ตามแน่นอนว่ามันเป็นไปได้ที่จะถ่ายทอดแนวคิดนี้? อย่างน้อยฉันก็หวังเช่นนั้น บางทีคุณสามารถนำเสนอตัวอย่าง C # เป็นรากฐานแล้วอธิบายสิ่งที่นักพัฒนา C # ต้องการให้เขาทำจากที่นั่น แต่ทำไม่ได้เพราะภาษาขาดคุณสมบัติการเขียนโปรแกรมที่ใช้งานได้ มันน่าอัศจรรย์เพราะมันสื่อความตั้งใจและประโยชน์ของพระสงฆ์ ดังนั้นนี่คือคำถามของฉัน: อะไรคือคำอธิบายที่ดีที่สุดที่คุณสามารถมอบให้กับนักพัฒนา C # 3 ขอบคุณ! (แก้ไข: โดยวิธีการที่ฉันรู้ว่ามีอย่างน้อย 3 "อะไรคือ monad" คำถามอยู่แล้วดังนั้น แต่ฉันเผชิญปัญหาเดียวกันกับพวกเขา …
190 c#  c#-3.0  lambda  monads 

5
ฉันจะใช้ Linq เพื่อรับรายการคุณสมบัติที่ไม่ซ้ำจากรายการวัตถุได้อย่างไร
ฉันกำลังพยายามใช้ Linq เพื่อส่งกลับรายการรหัสที่ระบุรายการของวัตถุที่ id เป็นคุณสมบัติ ฉันต้องการที่จะสามารถทำเช่นนี้ได้โดยไม่ต้องวนลูปผ่านแต่ละวัตถุและดึงรหัสที่เป็นเอกลักษณ์ที่ฉันพบ ฉันมีรายการของวัตถุประเภท MyClass และหนึ่งในคุณสมบัติของคลาสนี้คือ ID public class MyClass { public int ID { get; set; } } สิ่งที่ฉันต้องการจะทำคือเขียนแบบสอบถาม Linq เพื่อส่งรายการรหัสเหล่านั้นกลับมาให้ฉัน ฉันจะทำIList<MyClass>เช่นนั้นได้อย่างไรเมื่อมันคืนค่าIEnumerable<int>ของรหัส? ฉันแน่ใจว่าต้องเป็นไปได้ที่จะทำในหนึ่งหรือสองบรรทัดโดยใช้ Linq แทนที่จะวนซ้ำแต่ละรายการในรายการ MyClass และเพิ่มค่าที่ไม่ซ้ำกันลงในรายการ ความช่วยเหลือใด ๆ ในการสร้างโซลูชันที่สง่างามจะได้รับการชื่นชมอย่างมาก!
171 linq  class  list  c#-3.0  properties 

7
ใช้ C # Generic Timeout
ฉันกำลังมองหาความคิดที่ดีสำหรับการนำวิธีการทั่วไปไปใช้ในการเรียกใช้โค้ด (หรือผู้รับมอบสิทธิ์นิรนาม) บรรทัดเดียวด้วยการหมดเวลา TemperamentalClass tc = new TemperamentalClass(); tc.DoSomething(); // normally runs in 30 sec. Want to error at 1 min ฉันกำลังมองหาโซลูชันที่สามารถนำไปใช้อย่างหรูหราในหลาย ๆ ที่ที่โค้ดของฉันโต้ตอบกับโค้ดเจ้าอารมณ์ (ที่ฉันไม่สามารถเปลี่ยนแปลงได้) นอกจากนี้ฉันต้องการให้โค้ด "หมดเวลา" ที่ละเมิดมีการหยุดการทำงานเพิ่มเติมหากเป็นไปได้

10
ความแตกต่างระหว่างคุณสมบัติและฟิลด์ใน C # 3.0+
Наэтотвопросестьответына กองมากเกินнарусском : Длячегонужнысвойства? ฉันรู้ว่ามันน่าจะเป็นสิ่งที่ซ้ำกันของความแตกต่างระหว่างสนามและสถานที่ให้บริการใน C # คืออะไร? แต่คำถามของฉันมีความแตกต่างเล็กน้อย (จากมุมมองของฉัน): เมื่อฉันรู้ว่า ฉันจะไม่ใช้คลาสของฉันกับ "เทคนิคที่ใช้งานได้กับคุณสมบัติ" เท่านั้นและ ฉันจะไม่ใช้รหัสตรวจสอบใน getter / setter มีความแตกต่าง (ยกเว้นสไตล์ / การพัฒนาในอนาคต) เช่นการควบคุมบางอย่างในการตั้งค่าคุณสมบัติหรือไม่? มีความแตกต่างเพิ่มเติมระหว่าง: public string MyString { get; set; } และ public string myString; (ฉันทราบว่าเวอร์ชันแรกต้องใช้ C # 3.0 ขึ้นไปและคอมไพเลอร์สร้างฟิลด์ส่วนตัว)

8
เหตุใดจึงต้องแคสต์นิพจน์แลมบ์ดาเมื่อระบุเป็นพารามิเตอร์ Delegate ธรรมดา
ใช้เมธอด System.Windows.Forms.Control.Invoke (Delegate method) เหตุใดจึงทำให้เกิดข้อผิดพลาดเวลาคอมไพล์: string str = "woop"; Invoke(() => this.Text = str); // Error: Cannot convert lambda expression to type 'System.Delegate' // because it is not a delegate type ยังใช้งานได้ดี: string str = "woop"; Invoke((Action)(() => this.Text = str)); เมื่อเมธอดคาดว่าจะมี Delegate ธรรมดา?
124 c#  c#-3.0  delegates  lambda 

8
เพิ่มช่วงไปยังคอลเลกชัน
เพื่อนร่วมงานถามฉันในวันนี้ว่าจะเพิ่มช่วงลงในคอลเล็กชันได้อย่างไร Collection<T>เขามีชั้นเรียนที่สืบทอดจาก มีคุณสมบัติรับอย่างเดียวประเภทนั้นที่มีบางรายการอยู่แล้ว เขาต้องการเพิ่มรายการในคอลเล็กชันอื่นในคอลเล็กชันคุณสมบัติ เขาทำแบบ C # 3-friendly ได้อย่างไร? (สังเกตข้อ จำกัด เกี่ยวกับคุณสมบัติ get-only ซึ่งป้องกันโซลูชันเช่นการทำ Union และการกำหนดใหม่) แน่นอน foreach กับ Property แอดจะทำงาน แต่List<T>AddRange สไตล์จะดูหรูหรากว่ามาก ง่ายพอที่จะเขียนวิธีการขยาย: public static class CollectionHelpers { public static void AddRange<T>(this ICollection<T> destination, IEnumerable<T> source) { foreach (T item in source) { destination.Add(item); } } } แต่ฉันมีความรู้สึกว่าฉันกำลังคิดค้นล้อใหม่ ฉันไม่พบอะไรในที่คล้ายกันSystem.Linqหรือmorelinq …

4
วิธีที่ชอบในการสร้างลำดับ <T> ของ IEnumerable ใหม่จากค่าเดียว?
ฉันมักจะสร้างลำดับจากค่าเดียวโดยใช้ไวยากรณ์ของอาร์เรย์ดังนี้: IEnumerable&lt;string&gt; sequence = new string[] { "abc" }; หรือใช้รายการใหม่ ฉันต้องการทราบว่าใครมีวิธีที่ชัดเจนกว่านี้ในการทำสิ่งเดียวกันนี้
98 c#  linq  c#-3.0 

3
วิธีการไดนามิกคลาส Anonymous ใหม่
ใน C # 3.0 คุณสามารถสร้างคลาสที่ไม่ระบุชื่อด้วยไวยากรณ์ต่อไปนี้ var o1 = new { Id = 1, Name = "Foo" }; มีวิธีไดนามิกในการสร้างคลาสที่ไม่ระบุชื่อเหล่านี้ให้กับตัวแปรหรือไม่? ตัวอย่าง: var o1 = new { Id = 1, Name = "Foo" }; var o2 = new { SQ = 2, Birth = DateTime.Now }; ตัวอย่างการสร้างแบบไดนามิก: var o1 = DynamicNewAnonymous(new NameValuePair("Id", 1), …

7
ฉันสามารถใช้ตัวเริ่มต้นการรวบรวมสำหรับรายการพจนานุกรม <TKey, TValue> ได้หรือไม่
ฉันต้องการใช้ตัวเริ่มต้นการรวบรวมสำหรับรหัสบิตถัดไป: public Dictionary&lt;int, string&gt; GetNames() { Dictionary&lt;int, string&gt; names = new Dictionary&lt;int, string&gt;(); names.Add(1, "Adam"); names.Add(2, "Bart"); names.Add(3, "Charlie"); return names; } โดยทั่วไปแล้วควรเป็นดังนี้: return new Dictionary&lt;int, string&gt; { 1, "Adam", 2, "Bart" ... แต่ไวยากรณ์ที่ถูกต้องสำหรับสิ่งนี้คืออะไร?

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