2015-11-28 42 views
7

Trong Visual Studio 2015, khi tôi đi để viết một chuỗi suy trong một biến bằng cách gõ một mở xoăn khung '{', để đạt được những điều sau đây:Tại sao Visual Studio tạo dấu ngoặc kép cho các chuỗi nội suy C# 6?

var a = $"{}"; 

một khung kết thúc thứ hai được tự động chèn vào, màu đỏ hoặc hồng, như vậy

var a = $"{}}" 

Sau khi chèn một biến bên trong dấu ngoặc '{}' và cố gắng để biên dịch, Visual Studio ném một lỗi: "CS8086: A '}' nhân vật phải được thoát ra (bằng cách tăng gấp đôi) trong một chuỗi nội suy. Điều này có ý nghĩa, nhưng không giải thích tại sao thứ hai '}' xuất hiện ngay từ đầu! Tôi không muốn viết một ký tự '}'; Tôi chỉ muốn viết một chuỗi nội suy thường xuyên - một '}' cho một '{'. Mỗi lần tôi sử dụng các chuỗi nội suy, tôi buộc phải loại bỏ thủ công khung đóng thứ hai bất thường này để biên dịch thành công.

Nghiêm túc nhất, nó dường như không xảy ra mọi lúc. Nếu bạn xóa '{}}' khỏi chuỗi nội suy của mình và nhập lại '{' một lần nữa, bạn sẽ kết thúc bằng '{}' - giống như bạn mong đợi ở vị trí đầu tiên.

Có gì với hành vi này?

+2

Đây không phải là chủ đề. Trung tâm trợ giúp tuyên bố rõ ràng rằng các câu hỏi có thể xuất hiện "các công cụ phần mềm thường được các lập trình viên sử dụng" –

+3

VS2015 RTM có rất nhiều lỗi trình soạn thảo và các thuật ngữ nhưng đây không phải là một trong số chúng. Bạn sẽ phải tìm một bổ trợ làm điều này và gửi một lỗi tại chủ sở hữu. –

Trả lời

6

Điều này đang được gây ra bởi Resharper.

Bạn có thể chứng minh điều này bằng cách truy cập

Công cụ | Tùy chọn | ReSharper | Chung | Tạm ngưng

và sau đó thử lại. Thêm } sẽ không xuất hiện. (Tôi đã thử với R # 10.0)

Tôi đã giải quyết vấn đề này bằng cách nhấn^Z sau khi R # đã chèn thêm }, nhưng nó vẫn hơi khó chịu.

Tôi đoán điều này sẽ được báo cáo là lỗi trên trang web R # (trừ khi nó đã được khắc phục với bản phát hành gần đây).

[EDIT] Tôi đã báo cáo lỗi này là lỗi trên the Resharper forums. Báo cáo lỗi của tôi sẽ xuất hiện ở đó khi các mod đã phê duyệt.

+3

Vô hiệu hóa "Tự động chèn dấu ngoặc đóng" trong Tùy chọn sắp xếp lại -> Môi trường -> Trình soạn thảo -> Hành vi của trình soạn thảo xuất hiện để giải quyết vấn đề này, tuy nhiên tôi thấy không có sự khác biệt chung về tự động đóng-brace-chèn-hành vi sau khi vô hiệu hóa tùy chọn này (cho niềng răng có một Visual Studio thiết lập "Tự động brace hoàn thành" dưới Tools -> Options -> Text Editor -> C# -> Chung có thể được dự phòng với thiết lập của ReSharper) – lordmilko

Các vấn đề liên quan