2013-05-08 1 views
3

Существуют ли какие-либо ограничения на типы символов, которые я могу использовать для создания свойства для динамического объекта?Специальные символы для динамических объектов?

Есть ли список символов, которые я не могу использовать (например,/* @)?

+0

Почему бы вам просто не попробовать использовать эти символы, чтобы убедиться в этом? Если вы действительно хотите получить окончательный ответ, вы всегда можете прочитать спецификации C#, чтобы узнать, что такое юридический идентификатор. – Servy

ответ

3

Предположим, у вас есть:

dynamic eo = new ExpandoObject(); 

то, очевидно, если вы расширяете объект через C# синтаксис, вы должны следовать правилам C#, например:

eo.ValidCSharpIdentifier = 42; 
eo._OK = 42; 
eo.æ = 42; 

Но если расширить eo по литье до IDictionary<,>, тогда вы можете использовать другие символы:

((IDictionary<string, object>)eo).Add("NotValidC#Identifier", 42); 
((IDictionary<string, object>)eo).Add("42", 42); 
((IDictionary<string, object>)eo).Add("/", 42); 
((IDictionary<string, object>)eo).Add("*", 42); 
((IDictionary<string, object>)eo).Add("@", 42); 
((IDictionary<string, object>)eo).Add("", 42); 

Как видим, возможны странные идентификаторы. Строка должна быть объектом, поэтому ссылка null не может использоваться (как в .Add(null, 42) /* illegal */).

кажется не нужно ограничивать использование имени. Строковые клавиши показаны для сравнения с порядковым номером сравнение строк, например, EqualityComparer<string>.Default или StringComparer.Ordinal.

Конечно, некоторые языки .NET имеют разные правила для действительных символов в именах по сравнению с правилами C#.

+0

Спасибо, однако я заметил, что при привязке List с такими идентификаторами к radgridview столбцы будут отображаться как пустые столбцы, я думаю, что ошибка связана с telerik в этом случае. – Oliver

3

Любой Unicode Standard Приложение 15 символов (и подчеркивание), как C# spec говорит:

Правила для идентификаторов, приведенных в данном разделе в точности соответствуют тем, которые рекомендованы в стандарте Unicode Standard Приложения 15, за исключением того, что подчеркивание разрешен в качестве исходного символа (как это принято на языке программирования C), в идентификаторах допускаются escape-последовательности Unicode, а символ «@» разрешен в качестве префикса для включения ключевых слов, которые будут использоваться в качестве идентификаторов.

Для получения списка символов, содержащих префикс, необходимо ввести @, посмотреть HERE.