You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET中为何√不能作函数名而π可以?Unicode命名规则问询

VB.NET中√函数名编译失败但π可行的原因及命名规则

问题场景

以下VB.NET代码因使用√字符作为函数名,触发编译错误BC30037: invalid character:

Public Function √(x As BigDecimal) As BigDecimal
    Return BigDecimal.SquareRoot(x, BigDecimal.Precision)
End Function

但使用π作为函数名的代码却能正常编译:

Public Function π(x As BigDecimal) As BigDecimal
    Return BigDecimal.SquareRoot(x, BigDecimal.Precision)
End Function

即使给√添加下划线前缀(比如_√),依然无法通过编译,这是为什么?VB.NET对函数名的Unicode字符有什么规则?

原因解析

字符分类差异

  • π(Unicode编码U+03C0)属于数学字母数字符号类别,这类字符被VB.NET认定为符合标识符命名规范的“字母类”字符,允许作为函数名的首字符。
  • √(Unicode编码U+221A)属于数学运算符类别,这类字符被VB.NET编译器判定为无效标识符字符——下划线只能修饰合法字符组成的标识符,无法将非法字符转为合法,所以加前缀也没用。

VB.NET标识符的Unicode命名规则

VB.NET的函数名、变量名等标识符需遵循以下规则:

  • 首字符必须是:普通字母、下划线(_),或Unicode中归类为“字母”“字母数字连接符”的字符(比如π这类数学字母)。
  • 后续字符可以是:字母、数字、下划线,或Unicode中归类为“字母”“数字”“字母数字连接符”“标点连接符”的字符。
  • 绝对禁止使用Unicode中属于“运算符”“符号”“控制字符”类别的字符,比如√这类数学运算符就属于被禁止的范围。
  • 不能与VB.NET的内置关键字(如Public、Return)重名。

内容的提问来源于stack exchange,提问作者schlebe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 12:42:42