Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Roslyn C#语法工厂时如何转义变量名?_C#_Code Generation_Roslyn - Fatal编程技术网

使用Roslyn C#语法工厂时如何转义变量名?

使用Roslyn C#语法工厂时如何转义变量名?,c#,code-generation,roslyn,C#,Code Generation,Roslyn,所以我使用Roslyn SyntaxFactory生成C代码 在使用IdentifierName(string)生成变量名时,是否有方法转义变量名 要求: 如果支持Unicode就好了,但我想ASCII就足够了 如果是可逆的就好了 对于相同的输入总是相同的结果(“a”总是“a”) 每个输入的唯一结果(“a?”->“a”不能与“a!”->“a”相同) 可以从一个特殊字符转换为多个单个字符 API文档的含义似乎是,这里需要一个有效的C#标识符,因此Roslyn不会为您提供转义机制。因此,您需要定义

所以我使用Roslyn SyntaxFactory生成C代码

在使用
IdentifierName(string)
生成变量名时,是否有方法转义变量名

要求:

  • 如果支持Unicode就好了,但我想ASCII就足够了
  • 如果是可逆的就好了
  • 对于相同的输入总是相同的结果(“a”总是“a”)
  • 每个输入的唯一结果(“a?”->“a”不能与“a!”->“a”相同)
  • 可以从一个特殊字符转换为多个单个字符

    • API文档的含义似乎是,这里需要一个有效的C#标识符,因此Roslyn不会为您提供转义机制。因此,您需要定义一个字符串转换,以实现您想要的

      这样做的方法是看看其他事物是如何做到这一点的。看看HTML实体,它们总是使用
      &
      引入。它们总是很容易区分,而且还有一种方法可以对文本
      &
      进行编码,这样就不会限制可渲染字符集。或者考虑C字符串如何允许通过使用<代码> \//>代码>在字符串中包含字符串分隔符和其他特殊字符。 您需要选择一个在C#标识符中有效的字符作为表示要编码的非标识符字符之一的序列的“标记”,以及允许该字符也被表示的方法。然后为每个编码字符的标记后面的内容制作一个映射表。如果您想使用所有的Unicode,最简单的方法可能是只使用Unicode代码点编号。结果标识符可能不是很可读,但在您的用例中这可能并不重要


      一旦你有了一个合适的系统,编写一个字符串转换函数来实现它应该是非常简单的。

      你在寻找哪种类型的转义?我想转义一个字符串作为变量名使用。e、 g.
      as-.d、as.d、as-.d、
      在某些形式下应可用作变量名,具体取决于您需要它的原因。。。如果您只是在以后引用变量时才需要它,那么只需在变量声明中添加一个,并使用一个唯一的变量名,而不是您的具体要求是什么?逃逸必须是可逆的吗?它必须是独一无二的吗?(例如,
      a-
      a.
      是否必须生成不同的名称?)它是否必须支持所有Unicode,或者ASCII是否足够?