我试图了解这段自我复制代码是如何工作的(在此处找到),但问题是我无法让它按原样运行:
class c {
static void Main(){
string s = "class c{{static void Main(){{string s={0}{10};System.Console.Write(s,(char)34,s);}}}}";
System.Console.Write(s,(char)34,s); //<<-- exception on this line
}
}
它在 writeline 上引发异常:索引(从零开始)必须大于或等于零且小于参数列表的大小。
有人可以帮忙吗?尤其是关于格式化选项 {0}{10}?
我让它像这样工作(见下文),但它比原版更长 - 我很好奇原版如何在第一名中按原样工作:
class c {
static void Main(){
string s = "class c{{static void Main(){{string s={0}{1}{2};System.Console.Write(s,(char)34,s,(char)34);}}}}";
System.Console.Write(s,(char)34,s,(char)34);
}
}