2009-11-19 2 views
2

내가 자기 복제 코드의 조각 (here을 발견) 작동 방식을 이해하려고하지만, 문제는 내가있는 그대로가 를 실행 얻을 수있다 :C# Quine 문제

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보다 크거나 같고 인수 목록의 크기보다 작아야한다.

특히 {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); 
    } 
} 

답변

7

내가 누락 중괄호 한 쌍의이 있다고 생각 - 대신 {10}의이 {1}{0}을 읽어야합니다.

class c { 
    static void Main(){ 

     string s = "class c{{static void Main(){{string s={0}{1}{0};System.Console.Write(s,(char)34,s);}}}}"; 

     System.Console.Write(s,(char)34,s); //<<-- exception on this line 

    } 
} 
+0

charme와 (과) 같은 작품 - 당신은 남자 야. – JohnIdol

4

수 원작으로 ?

s={0}{1}{0} 
3

나는 원래가 같이했는데 있다고 생각 :

class c { 
    static void Main() { 
    string s = "class c{{static void Main(){{string s={0}{1}{0};System.Console.Write(s,(char)34,s);}}}}"; 
    System.Console.Write(s, (char)34, s); 
    } 
} 

즉, {0}{10}{0}{1}{0}으로 변경해야합니다.

형식 문자열의 {0}은 문자열 앞뒤에 따옴표를 넣는 데 사용됩니다.