2009-01-07 32 views
35

Sử dụng asp.net MVC Tôi muốn làm điều này bên trong một cái nhìn:Làm cách nào để sử dụng từ khóa C# làm tên thuộc tính?

<%= Html.TextBox("textbox1", null, new { class="class1" }) %> 

Tuyên bố này không biên dịch vì lớp là từ khóa trong C#. Tôi muốn biết làm thế nào tôi có thể thoát khỏi tên tài sản như vậy mà biên dịch này.

Có thể thực hiện việc này để biên dịch nếu tôi thay đổi thuộc tính "class" thành "Class" (chữ hoa C). Nhưng điều này không phù hợp vì xhtml nghiêm ngặt nói rằng tất cả các thuộc tính (và phần tử) phải là chữ thường.

Trả lời

95

Bạn có thể sử dụng từ khóa trong C# làm số nhận dạng bằng cách thêm trước @ infront của chúng.

var @class = new object(); 

Để trích dẫn từ các tài liệu MSDN trên C# Keywords:

Từ khoá là được xác định trước đó, một tên reserved có đặc biệt ý nghĩa để trình biên dịch. Chúng không thể được sử dụng làm số nhận dạng trong chương trình trừ khi chúng bao gồm @ làm tiền tố. Ví dụ: @if là số nhận dạng hợp lệ nhưng nếu không phải vì nếu là từ khóa.

+4

+1 vì tôi không biết điều đó. Nhưng tôi nghĩ bạn nên xem xét không làm điều này ở tất cả, tránh xa từ khóa-đó-arent-từ khóa bất cứ nơi nào có thể (C#, SQL, python, whatnot). Nhận ra từ điển đồng nghĩa của bạn và tìm một từ đồng nghĩa cho những gì bạn đang cố gắng nói. – jcollum

+3

Một nhu cầu cho điều này là khi sử dụng những thứ được xác định bằng các ngôn ngữ khác. Họ có thể có danh sách khác nhau của các từ dành riêng, do đó, một cái gì đó đã được hoàn toàn hợp lệ trong ngôn ngữ gốc nếu không có thể không thể tiếp cận trong C#, và ngược lại. –

+3

Thật vậy, Rob, ví dụ trong câu hỏi ("lớp") là một trường hợp tốt "được định nghĩa bằng hai ngôn ngữ" (C# và HTML). –

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