Интересный вопрос, но не знаю, почему вы когда-нибудь достигнете предела в реальности, поэтому ответ может быть не таким уж полезным, потому что это большое число.
Я нашел этот поток , где кто-то написал следующий тест, чтобы фактически создать класс с возрастающим количеством функций, чтобы увидеть, где находится точка разрыва:
namespace MethodCountLimitFinder
{
class Program
{
[System.STAThreadAttribute]
static void Main ( string [] args )
{
Microsoft.CSharp.CSharpCodeProvider provider =
new Microsoft.CSharp.CSharpCodeProvider() ;
System.CodeDom.Compiler.CompilerParameters cp =
new System.CodeDom.Compiler.CompilerParameters() ;
cp.GenerateExecutable = false ;
cp.GenerateInMemory = true ;
System.CodeDom.Compiler.CompilerResults cr = null ;
System.Text.StringBuilder inner =
new System.Text.StringBuilder ( "namespace Tester { class Test {" ) ;
int methodCount = 1000000 ;
while ( true )
{
System.Console.WriteLine ( methodCount ) ;
for ( int i = methodCount ; i > 0 ; i-- )
{
inner.AppendFormat ( "void M{0}(){{}}\n" , methodCount++ ) ;
}
inner.Append ( "}}" ) ;
cr = provider.CompileAssemblyFromSource ( cp , inner.ToString() ) ;
if ( cr.Errors.Count > 0 )
{
break;
}
inner.Remove ( inner.Length - 2 , 2 ) ;
}
foreach ( System.CodeDom.Compiler.CompilerError ce in cr.Errors )
{
System.Console.WriteLine ( ce.ToString() ) ;
}
}
}
}
Исходя из результатов, похоже, что это зависит от ресурса, а не от спецификации, которая, скорее всего, не является жестко определенной, если вы не привязываете ее к 32/64-битной ссылке на индекс или к чему-то, что я не считаю реалистичным, поскольку вы в любом случае сначала будет достигнут предел ресурса.
Из-за нехватки ресурсов тест прошел более 200 тыс. +, Но не прошел.
Опять интересная, но не такая полезная информация ИМО.