【问题标题】:What are the naming rules for CIL Classes and MethodsCIL 类和方法的命名规则是什么
【发布时间】:2018-09-16 12:34:55
【问题描述】:

它们与 C# 有何不同?

是否有任何标准方法可以在 CIL 中为方法编写名称,并且不能与任何 C# 方法冲突,因为 CIL 名称在 C# 中是非法的?

这样的名称会不会导致其他 .net 语言(例如 F# 或 Visual Basic)出现问题?

C# 中的命名规则示例如下:Method2 是 C# 中方法的合法名称,但 2Method 是非法方法名称,因为名称不能以数字开头,但可能包含数字。 CIL 有哪些命名规则?

我正在编写一个仅由 Il 使用的自动生成方法,我想确保它不会与任何 C# 名称冲突。

【问题讨论】:

  • CLR 接受几乎任何东西。正式地,Unicode TR15,附件 7 中指定的字符集,使用规范化规则 C。它必须支持在其上运行的任何语言的命名规则。值得注意的是 ab/ 被混淆器大量使用,他们将使用不可打印的字符来使其变得困难。所以这不是您需要查看的岩石,而是按照语言指定的内容。

标签: c# .net naming cil


【解决方案1】:

要编写可以与任何 .NET 语言互操作的代码,您需要遵循公共语言规范的指导方针,并确保您的公开可见类型是“符合 CLS 的”:

为了与用任何语言编写的其他对象充分交互,对象 必须只向调用者公开那些对所有人都通用的特性 语言。这组共同的特征是由共同定义的 语言规范 (CLS),它是一组适用于 生成的程序集。公共语言规范定义在 第 I 部分,ECMA-335 Standard: Common Language Infrastructure 的第 7 至 11 条。

Language Independence and Language-Independent Components

【讨论】:

  • 其实我正在寻找相反的东西:我正在编写一个仅由 Il 使用的自动生成方法,并且我想确保它不会与任何 C# 名称冲突。
  • 您需要在此处查看 C# 中的标识符规则。 docs.microsoft.com/en-us/dotnet/csharp/language-reference/…您已经确定了一种用于生成非法 C# 标识符的简单模式。
【解决方案2】:

我怀疑您实际上是指 CLS 合规性。这是详细的here 以及命名规则。最重要的事情似乎是确保两个标识符不仅仅是大小写不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 2012-05-30
    • 2016-11-13
    • 1970-01-01
    • 2019-04-23
    相关资源
    最近更新 更多