有没有人碰巧知道您选择的编程语言中方法名称的最大长度是多少?我打算将这个问题作为一个特定的C#问题,但我认为在整个范围内了解它会很好.
涉及的因素有哪些:
语言规范是否限制了这个?
编译器将其限制为什么?
32位与64位机器有什么不同?
Jon Skeet.. 35
对于C#,我不相信有特定的硬限制.(例如,C#5规范的第2.4.2节没有给出限制.)Roslyn v2.2.0.61624似乎有1024个字符的限制; 这超出了可读性的范围,甚至是一个合理的机器生成的名称.
对于Java,规范的3.8节说明:
标识符是无限长度的Java字母和Java数字序列,第一个必须是Java字母.
Greg.. 20
PHP似乎仅受脚本内存限制的限制.
使用128Mb,我能够创建一个包含400万个字符的类(和方法).
'; } }"); new $className(); $i *= 2; } ?>
DLeh.. 17
我刚刚在C#Visual Studio 2010(x64)中进行了测试:制作了一个标识符:
int a123456789a123...;
并重复.在512个字符处,VS给出了错误"标识符太长".511虽然很好.(在Word中检查字符数.)
另一个例子:
int whyintheworldwouldyoueverhaveanidenfifierthislongitsreallyjustquiteridiculousimeancmonyoucouldatleasthavethecommoncourtesyofmakingitcamelcasesoitsnotsohardtoreadcmonjuststopnowyourereallyreachingtomakethisaslongaspossiblearentyou123412341234alrightwellthatsenoughnowisntitwelliguessnotbecauseimstillgoingthisisofficallytheworstidentifierever?_?okaynowthatithasunicodeitsofficialbutseriouslythisthingissolongthatihadtogetupinthemiddleofittotakeabreakbeforesittingdowntofinishtoppingitofftothemaxcharlimitof___511;
我其实读完了.对我的雇主感觉不好. (2认同)
Kirill Osenk.. 12
微软的C#实现是511,VB.NET的实现是1023.
Visual Studio将仅标记标识符的前511个(1024个VB)字符,并将其余字符保持为黑色.
对于C#,我不相信有特定的硬限制.(例如,C#5规范的第2.4.2节没有给出限制.)Roslyn v2.2.0.61624似乎有1024个字符的限制; 这超出了可读性的范围,甚至是一个合理的机器生成的名称.
对于Java,规范的3.8节说明:
标识符是无限长度的Java字母和Java数字序列,第一个必须是Java字母.
PHP似乎仅受脚本内存限制的限制.
使用128Mb,我能够创建一个包含400万个字符的类(和方法).
'; } }"); new $className(); $i *= 2; } ?>
我刚刚在C#Visual Studio 2010(x64)中进行了测试:制作了一个标识符:
int a123456789a123...;
并重复.在512个字符处,VS给出了错误"标识符太长".511虽然很好.(在Word中检查字符数.)
另一个例子:
int whyintheworldwouldyoueverhaveanidenfifierthislongitsreallyjustquiteridiculousimeancmonyoucouldatleasthavethecommoncourtesyofmakingitcamelcasesoitsnotsohardtoreadcmonjuststopnowyourereallyreachingtomakethisaslongaspossiblearentyou123412341234alrightwellthatsenoughnowisntitwelliguessnotbecauseimstillgoingthisisofficallytheworstidentifierever?_?okaynowthatithasunicodeitsofficialbutseriouslythisthingissolongthatihadtogetupinthemiddleofittotakeabreakbeforesittingdowntofinishtoppingitofftothemaxcharlimitof___511;
微软的C#实现是511,VB.NET的实现是1023.
Visual Studio将仅标记标识符的前511个(1024个VB)字符,并将其余字符保持为黑色.
Lisp常用符号的名称是字符串;字符串的长度限制为array-dimension-limit
的值array-dimension-limit
是一个正整数,它是数组的每个单独维的上限。此限制取决于实现,但不会小于1024。(建议实施者在不牺牲性能的情况下,使此限制尽可能大。)
实际上,这可能会很大
Welcome to Clozure Common Lisp Version 1.3-dev-r11583M-trunk (DarwinX8664)! ? array-dimension-limit 72057594037927936 ? Welcome to Clozure Common Lisp Version 1.3-dev-r11583M-trunk (DarwinX8632)! ? array-dimension-limit 16777216 ?
这个答案忽略了方法名的包名。这可能会使长度加倍。