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

10
ประเภทที่กำหนดไว้ล่วงหน้า 'System.ValueTuple´2´ ไม่ได้ถูกกำหนดหรือนำเข้า
ฉันได้ติดตั้ง Visual Studio 15 Preview 3 แล้วและพยายามใช้คุณสมบัติ tuple ใหม่ static void Main(string[] args) { var x = DoSomething(); Console.WriteLine(x.x); } static (int x, int y) DoSomething() { return (1, 2); } เมื่อฉันรวบรวมฉันได้รับข้อผิดพลาด: ประเภทที่กำหนดไว้ล่วงหน้า 'System.ValueTuple´2´ ไม่ได้ถูกกำหนดหรือนำเข้า ตามการโพสต์บล็อกคุณสมบัตินี้ควรเป็น "เปิด" โดยค่าเริ่มต้น ฉันทำอะไรผิด?

2
อะไรคือความแตกต่างระหว่าง“ x is null” และ“ x == null”?
ใน C # 7 เราสามารถใช้ if (x is null) return; แทน if (x == null) return; มีข้อได้เปรียบอะไรบ้างในการใช้วิธีการใหม่ (ตัวอย่างก่อนหน้า) ในแบบเก่า? ความหมายต่างกันหรือไม่? เป็นเรื่องของรสนิยมหรือไม่? ถ้าไม่ฉันควรใช้อันใดอันหนึ่งกับอีกอันหนึ่ง? อ้างอิง: มีอะไรใหม่ใน C # 7.0

4
ฟังก์ชั่นท้องถิ่นกับแลมบ์ดา C # 7.0
ฉันกำลังดูการใช้งานใหม่ในC # 7.0และฉันคิดว่ามันน่าสนใจที่พวกเขาได้ใช้ฟังก์ชั่นในท้องถิ่น แต่ฉันไม่สามารถจินตนาการถึงสถานการณ์ที่ฟังก์ชั่นในท้องถิ่นจะได้รับความนิยมมากกว่าการแสดงออกแลมบ์ดา ฉันเข้าใจว่า lambdas เป็นanonymousฟังก์ชั่นในขณะที่ฟังก์ชั่นในท้องถิ่นไม่ได้ แต่ฉันไม่สามารถเข้าใจสถานการณ์โลกแห่งความเป็นจริงได้ซึ่งฟังก์ชั่นในท้องถิ่นมีข้อได้เปรียบมากกว่าการแสดงออกแลมบ์ดา ตัวอย่างใด ๆ จะได้รับการชื่นชมมาก ขอบคุณ
178 c#  function  lambda  c#-7.0 

2
วิธีการใช้ C # 7 กับ Visual Studio 2015
Наэтотвопросестьответына กองมากเกินнарусском : Можнолииспользовать C # 7.0 в VS старее 2017? Visual Studio 2017 (15.x) รองรับ C # 7 แต่สิ่งที่เกี่ยวกับ Visual Studio 2015 (14.x) ฉันจะใช้ C # 7 กับมันได้อย่างไร

6
อะไรคือความแตกต่างระหว่าง System.ValueTuple และ System.Tuple?
ฉันถอดรหัสไลบรารี C # 7 บางส่วนและเห็นValueTupleการใช้งานทั่วไป อะไรคืออะไรValueTuplesและทำไมไม่Tupleแทน? https://docs.microsoft.com/en-gb/dotnet/api/system.tuple https://docs.microsoft.com/en-gb/dotnet/api/system.valuetuple
144 c#  .net  tuples  c#-7.0 

2
คำสั่งไวยากรณ์ผลตอบแทนแปลก
ฉันรู้ว่านี่อาจฟังดูแปลก แต่ฉันไม่รู้แม้กระทั่งวิธีค้นหาไวยากรณ์นี้ในอินเทอร์เน็ตและฉันก็ไม่แน่ใจว่าหมายถึงอะไร ดังนั้นฉันได้ดูโค้ด MoreLINQ แล้วฉันก็สังเกตเห็นวิธีนี้ public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey> comparer) { if (source == null) throw new ArgumentNullException(nameof(source)); if (keySelector == null) throw new ArgumentNullException(nameof(keySelector)); return _(); IEnumerable<TSource> _() { var knownKeys = new HashSet<TKey>(comparer); foreach (var element in source) { if (knownKeys.Add(keySelector(element))) …
106 c#  .net  c#-7.0 

4
ไม่สามารถคืนค่า Tuple จากวิธีการโดยใช้ Visual Studio 2017 และ C # 7.0
ฉันได้ติดตั้ง Visual Studio 2017 Community ที่เปิดตัวเมื่อสัปดาห์ที่แล้วและฉันเริ่มสำรวจคุณสมบัติใหม่ของ C # 7 ดังนั้นฉันจึงสร้างวิธีง่ายๆที่คืนค่าสองค่า: public class Program { public static void Main(string[] args) { (int sum, int count) a = ReturnTwoValues(); } static (int sum, int count) ReturnTwoValues() => (1, 1); } คอมไพเลอร์กำลังสร้างข้อผิดพลาด: ข้อผิดพลาด CS8137 ไม่สามารถกำหนดคลาสหรือสมาชิกที่ใช้ทูเปิลได้เนื่องจากไม่พบคอมไพเลอร์ประเภท 'System.Runtime.CompilerServices.TupleElementNamesAttribute' คุณขาดข้อมูลอ้างอิงหรือไม่? ฉันพยายามค้นหาข้อมูลอ้างอิงในกรอบที่มีชื่อนี้ แต่โชคไม่ดี! ถ้าเราต้องการอะไรเพิ่มเติมเพื่อใช้ฟีเจอร์ C # 7.0 …

3
TryParse โดยไม่ใช้พารามิเตอร์ var
คุณลักษณะใหม่ใน C # 6.0 ช่วยให้สามารถประกาศตัวแปรภายในเมธอด TryParse ฉันมีรหัส: string s = "Hello"; if (int.TryParse(s, out var result)) { } แต่ฉันได้รับข้อผิดพลาดในการคอมไพล์: ฉันทำอะไรผิด? PS: ในการตั้งค่าโปรเจ็กต์ C # 6.0 และ. NET framework 4.6 ถูกตั้งค่าไว้
94 c#  c#-6.0  c#-7.0 

2
ใน C # คุณสามารถกำหนดนามแฝงให้กับ tuple ด้วยชื่อได้หรือไม่?
ฉันรู้ว่าเป็นไปได้ที่จะกำหนดนามแฝงใน C # ด้วยคำหลักโดยใช้ เช่น using ResponseKey = System.ValueTuple<System.Guid, string, string>; อย่างไรก็ตามเป็นไปได้หรือไม่ที่จะกำหนดโดยใช้ไวยากรณ์ใหม่สำหรับสิ่งที่เป็นค่า using ResponseKey = (Guid venueId, string contentId, string answer); ดูเหมือนว่าไวยากรณ์นี้จะไม่ทำงาน ควรเป็น?
92 c#  c#-7.0 

3
สลับกับพฤติกรรมแปลก ๆ var / null
ระบุรหัสต่อไปนี้: string someString = null; switch (someString) { case string s: Console.WriteLine("string s"); break; case var o: Console.WriteLine("var o"); break; default: Console.WriteLine("default"); break; } ทำไมงบเปลี่ยนการจับคู่ในcase var o? เป็นความเข้าใจของฉันที่case string sไม่ตรงกันเมื่อใดs == nullเนื่องจาก (ได้ผล) (null as string) != nullประเมินเป็นเท็จ IntelliSense บน VS Code บอกฉันว่าoเป็นstringเช่นกัน ความคิดใด ๆ ? คล้ายกับ: C # 7 …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.