В этом примере IronPython, что делает символ @ и как он реализован?

http://www.ironpython.info/index.php/Using_Python_Classes_from_.NET/CSharp_IP_2.6

   string code = @"
   print 'test = ' + test
   class MyClass:
       def __init__(self):
           pass

       def somemethod(self):
           print 'in some method'

       def isodd(self, n):
           return 1 == n % 2
   ";

Это '@' часть C# или это что-то добавленное IronPython? Если последнее, как вы это делаете в C#, какая-то перегрузка операторов (в основном я могу заставить '@' делать то, что я хочу, и т. Д.)? Пример реализации был бы отличным. Иначе, что здесь происходит?

3 ответа

Решение

@"" является дословным строковым литералом в C#. То есть экранирующие символы внутри него не интерпретируются.

В этом случае код Python хранится в C# code строковая переменная, а затем компилируется в CompiledCode из ScriptSource используя ScriptEngine (который сам по себе создан с Python.CreateEngine()).

string path = @"C:\Sweet\now\I\can\use\backslashes\without\writing\them\all\twice.txt"

@ Является частью кода C#. Это означает, что строка является дословным строковым литералом. Строка содержит код Python для выполнения.

Другие вопросы по тегам