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

C # 6.0 มาพร้อมกับ Roslyn (.NET Compiler Platform) และ Visual Studio 2015

1
วิธีการใช้ผู้ประกอบการที่ประกอบไปด้วยภายในสายแทรก?
ฉันสับสนว่าทำไมรหัสนี้จะไม่รวบรวม: var result = $"{fieldName}{isDescending ? " desc" : string.Empty}"; ถ้าฉันแยกมันก็ใช้งานได้ดี: var desc = isDescending ? " desc" : string.Empty; var result = $"{fieldName}{desc}";

3
เครื่องหมายคำถามและตัวดำเนินการ dot คืออะไร หมายถึงใน C # 6.0?
ด้วย C # 6.0 ในตัวอย่าง VS2015 เรามีโอเปอเรเตอร์ใหม่?.ซึ่งสามารถใช้ดังนี้: public class A { string PropertyOfA { get; set; } } ... var a = new A(); var foo = "bar"; if(a?.PropertyOfA != foo) { //somecode } มันทำอะไรกันแน่?
359 c#  operators  c#-6.0 

5
C # 6.0 ทำงานกับ. NET 4.0 ได้หรือไม่
ฉันสร้างโครงการตัวอย่างโดยมีสารพัด C # 6.0 - การเผยแพร่ว่างและการเริ่มต้นคุณสมบัติเป็นตัวอย่างให้ตั้งค่าเวอร์ชันเป้าหมาย. NET 4.0 และใช้งานได้ ... public class Cat { public int TailLength { get; set; } = 4; public Cat Friend { get; set; } public string Mew() { return "Mew!"; } } class Program { static void Main(string[] args) { var cat = new …
275 c#  .net  c#-6.0 

16
ชื่อของวัตถุประสงค์คืออะไร?
เวอร์ชั่น 6.0 มีคุณสมบัติใหม่nameofแต่ฉันไม่เข้าใจวัตถุประสงค์ของมันเพราะใช้ชื่อตัวแปรและเปลี่ยนเป็นสตริงในการคอมไพล์ ฉันคิดว่ามันอาจมีจุดประสงค์บางอย่างเมื่อใช้งาน<T>แต่เมื่อฉันลองnameof(T)มันก็แค่พิมพ์ให้ฉันTแทนที่จะเป็นประเภทที่ใช้แล้ว มีความคิดเกี่ยวกับวัตถุประสงค์หรือไม่
263 c#  .net  c#-6.0  nameof 

6
การมอบหมาย => ใน C # ในลายเซ็นคุณสมบัติคืออะไร
ฉันเจอรหัสที่บอกว่า public int MaxHealth => Memory[Address].IsValid ? Memory[Address].Read<int>(Offs.Life.MaxHp) : 0; ตอนนี้ฉันค่อนข้างคุ้นเคยกับการแสดงออกของแลมบ์ดาแล้ว ฉันไม่ได้เห็นมันใช้วิธีนี้ สิ่งที่จะเป็นความแตกต่างระหว่างคำสั่งข้างต้นและ public int MaxHealth = x ? y:z;
229 c#  c#-6.0 

6
วิธีการเปิดใช้งานคุณสมบัติ C # 6.0 ใน Visual Studio 2013
ฉันกำลังใช้งานฟีเจอร์ล่าสุดที่แนะนำใน C # 6.0 และเพิ่งตามตัวอย่างของคุณสมบัติเริ่มต้นอัตโนมัติ class NewSample { public Guid Id { get; } = Guid.NewGuid(); } แต่ IDE ของฉันไม่รู้จักไวยากรณ์ ฉันสงสัยว่าฉันจะเปิดใช้งาน C # 6.0 ใน Visual Studio 2013 ได้อย่างไรกรอบเป้าหมายที่ฉันใช้คือ 4.5.1

5
บรรทัดการแก้ไขสตริงแบบยาวใน C # 6
ฉันพบว่าแม้ว่าการแก้ไขสตริงจะดีมากเมื่อใช้กับการเรียกรูปแบบสตริงของฐานรหัสที่มีอยู่ของฉันเนื่องจากขีด จำกัด คอลัมน์ที่ต้องการโดยทั่วไปสตริงจะยาวเกินไปสำหรับบรรทัดเดียวอย่างรวดเร็ว โดยเฉพาะอย่างยิ่งเมื่อนิพจน์ที่ถูกแก้ไขมีความซับซ้อน ด้วยสตริงรูปแบบคุณมีรายการตัวแปรที่คุณสามารถแบ่งออกเป็นหลายบรรทัด var str = string.Format("some text {0} more text {1}", obj1.property, obj2.property); ใครมีวิธีที่ต้องการในการทำลายเส้นเหล่านี้หรือไม่? ฉันคิดว่าคุณสามารถทำสิ่งต่างๆเช่น: var str = $"some text { obj1.property }" + " more text { obj2.property };
138 c#  c#-6.0 

7
คุณลักษณะ C # 6.0 ไม่ทำงานกับ Visual Studio 2015
ฉันกำลังทดสอบ Visual Studio 2015 กับ C # 6.0 แต่ฟีเจอร์ภาษาไม่ทำงาน ในแอปพลิเคชันเว็บ MVC โค้ดต่อไปนี้จะรวบรวม: if (!string.IsNullOrWhiteSpace(Model.Profile?.TypeName)) { // More logic here... } อย่างไรก็ตามเมื่อฉันเรียกใช้แอปพลิเคชันผ่าน Debug และ IIS Express ฉันได้รับข้อผิดพลาดต่อไปนี้: CS1525: เงื่อนไขของนิพจน์ไม่ถูกต้อง "." ฉันจะเปิดใช้งานคุณสมบัติเหล่านี้ได้อย่างไร?

6
ฉันจะปิดใช้งานการสนับสนุน C # 6 ใน Visual Studio 2015 ได้อย่างไร
พื้นหลัง เรามีโครงการที่เรากำลังพัฒนาในปี 2015 ด้วยการเปิดใช้งาน C # 6 ซึ่งบางครั้งจำเป็นต้องเปิดโดยนักพัฒนาที่ใช้ VS 2013 โดยไม่มี C # 6 เราไม่มีความตั้งใจที่จะใช้ C # 6 ภายในโซลูชันนี้ (เท่าที่ฉันต้องการ) ปัญหา Visual Studio และ ReSharper แนะนำการสร้างภาษา C # 6 ที่เป็นประโยชน์ซึ่งทำให้การแก้ไขไม่สามารถใช้งานได้ใน Visual Studio รุ่นก่อนหน้าโดยไม่มีการสนับสนุน C # 6 ฉันได้ปิดการใช้งานการสนับสนุน ReSharper C # 6 แล้วแต่ฉันไม่สามารถปิดการใช้งาน / จำกัด คุณสมบัติ C # ในโซลูชันทั้งหมด คำถาม ฉันจะ …

6
อะไรคือความหมายของตัวปรับการเข้าถึง C # ที่วางแผนไว้
ในฐานะที่เป็นส่วนหนึ่งของเอกสารRoslynบน GitHub มีหน้าที่เรียกว่าสถานะการใช้งานคุณลักษณะภาษาพร้อมด้วยคุณลักษณะภาษาที่วางแผนไว้สำหรับ C # และ VB คุณลักษณะหนึ่งที่ฉันไม่สามารถคาดเดาได้คือprivate protectedตัวปรับการเข้าถึง: private protected string GetId() { … } นอกจากนี้ยังมีหน้าหมายเหตุการออกแบบภาษา C #ซึ่งอธิบายถึงคุณลักษณะใหม่ ๆ มากมาย แต่ไม่ใช่คุณลักษณะนี้ Eric Lippert กล่าวในความคิดเห็น : ข้อผิดพลาดของคุณคือการคิดว่าตัวดัดแปลงเป็นการเพิ่มข้อ จำกัด ในความเป็นจริงตัวปรับลดข้อ จำกัด เสมอ โปรดจำไว้ว่าสิ่งต่างๆเป็น "ส่วนตัว" โดยค่าเริ่มต้น การเพิ่มโมดิฟายเออร์เท่านั้นที่จะทำให้มีข้อ จำกัด น้อยลง ความหมายของprivate protectedอะไร? ฉันจะใช้เมื่อใด

1
คุณใช้สตริงคำต่อคำกับการแก้ไขอย่างไร?
ใน C # 6 มีคุณสมบัติใหม่: สตริงที่ถูกสอดแทรก สิ่งเหล่านี้ช่วยให้คุณสามารถใส่นิพจน์ลงในโค้ดได้โดยตรงแทนที่จะใช้ดัชนี: string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y()); กลายเป็น: string s = $"Adding \"{x}\" and {this.Y()} to foobar."; อย่างไรก็ตามเรามีสตริงจำนวนมากในหลายบรรทัดโดยใช้สตริงคำต่อคำ (ส่วนใหญ่เป็นคำสั่ง SQL) ดังนี้: string s = string.Format(@"Result... Adding ""{0}"" and {1} to foobar: {2}", x, this.Y(), x.GetLog()); การเปลี่ยนกลับเป็นสตริงปกติดูเหมือนจะยุ่งเหยิง: string s = …

7
จะใช้ C # 6 กับ Web Site ประเภทโครงการอย่างไร?
อัปเดตประเภทโครงการเว็บไซต์ที่มีอยู่Visual Studio 2015 ฉันเปลี่ยนกรอบงานเป็น 4.6 จากนั้นฉันคาดว่าจะมีคุณสมบัติใหม่ทั้งหมดในโค้ดของฉันหลังไฟล์ ขออภัยฉันได้รับข้อผิดพลาดเช่น: ข้อผิดพลาด CS8026: คุณสมบัติ 'คุณสมบัติการแสดงออก' ไม่มีใน C # 5 โปรดใช้ภาษาเวอร์ชัน 6 ขึ้นไป หรือเช่น: ข้อผิดพลาด CS8026: คุณลักษณะ 'สตริงที่ถูกแก้ไข' ไม่มีใน C # 5 โปรดใช้ภาษาเวอร์ชัน 6 ขึ้นไป ฉันตรวจสอบ Google อย่างรวดเร็วและพบว่ามีผู้ชายคนหนึ่งโพสต์ความคิดเห็นในบล็อกโพสต์ของ ScottGu (ค้นหา "8026" ในหน้านั้น) เนื่องจากฉันไม่เข้าใจวิธีแก้ปัญหาของเขาบวกกับฉันต้องการให้มองเห็นโซลูชันมากขึ้นฉันจึงได้สร้างโพสต์ SO นี้ขึ้น คำถามของฉัน: ฉันจะมีโครงการ Visual Studio 2015 ประเภทเว็บไซต์ (เช่นไม่ใช่Web Application ) เพื่อจดจำคุณลักษณะ …

2
ฉันจะใช้คุณลักษณะ C # 6“ การใช้แบบคงที่” ได้อย่างไร?
ฉันมีลักษณะที่คู่ของเป็นคุณสมบัติใหม่ใน C # 6 โดยเฉพาะ "ใช้คงที่" การใช้ staticเป็นรูปแบบใหม่ของการใช้ประโยคที่ให้คุณนำเข้าสมาชิกแบบคงที่ไปยังขอบเขตได้โดยตรง (ด้านล่างของบล็อกโพสต์) แนวคิดมีดังนี้ตามแบบฝึกหัดสองสามข้อที่ฉันพบ แทนที่จะเป็น: using System; class Program { static void Main() { Console.WriteLine("Hello world!"); Console.WriteLine("Another message"); } } คุณสามารถละเว้นConsoleคำสั่งซ้ำได้โดยใช้คุณลักษณะ C # 6 ใหม่ในการใช้คลาสแบบคงที่: using System.Console; // ^ `.Console` added. class Program { static void Main() { WriteLine("Hello world!"); WriteLine("Another message"); } // …

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

3
จะอัพเกรด msbuild เป็น C # 6 ได้อย่างไร?
ฉันต้องการใช้ C # 6 ในโปรเจ็กต์ของฉัน (การขยายสัญญาณว่างคุณสมบัติอื่น ๆ ) ฉันได้ติดตั้ง VS 2015 บนพีซีของฉันแล้วและมันทำงานได้ยอดเยี่ยมและสร้างรหัสทดสอบเช่น var user = new SingleUserModel(); //all model fields are null var test = user.User?.Avatar?["blah"]; แต่เมื่อผมได้ผลักดันโครงการของฉันที่จะซื้อคืนและ CI ?เริ่มที่จะสร้างมันสร้างล้มเหลวเนื่องจากการได้รับการสนับสนุน ฉันได้ติดตั้ง VS2015 บนเซิร์ฟเวอร์ CI แล้ว แต่ก็เหมือนจะไม่ได้ใช้งาน ฉันจะทำอะไรได้บ้าง? CI - CruiseControl .NET สร้างด้วย C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe

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