2015-02-01 7 views
-3

저는 C#을 처음 사용하고 있으며 다음 코드에서 어떤 문제인지 모릅니다. 나는이 코드를 친구가 가지고있다. 기본적으로 프로그램에 따라 문자열을 암호화하는 프로그램입니다. 제발 도와주세요. 나는 매우 감사 할 것이다. 당신이 오류를 식별 오류를 보면C# 컴파일 시간 오류

using System; 
using System.Linq; 
using System.Runtime.CompilerServices; 

class Class1 
    { 

     // error lies in these 10 lines mainly. 

     private int[,] <key> k__BackingField; 

     public int[,] key 
     { 
      get 
      { 
       return <key>k__BackingField; 
      } 
      set 
      { 
       <key>k__BackingField = value; 
      } 
     } 

     public Class1() 
     { 
     } 

     public string CreatetheCipher(string plainText, int rowsize, int colsize) 
     { 
      char[] chArr = plainText.ToCharArray(); 
      int[,] iArr = new int[3, 3]; 
      int i1 = 0, i2 = 0; 
      int i3 = Enumerable.Count<char>(chArr); 
      for (int i4 = 0; i4 < rowsize; i4++) 
      { 
       for (int i5 = 0; i5 < colsize; i5++) 
       { 
        if (i2 < i3) 
        { 
         if (Char.IsUpper(chArr[i2])) 
          i1 = Convert.ToInt32(chArr[i2] - 65); 
         iArr[i4, i5] = i1; 
         i2++; 
        } 
        else 
        { 
         iArr[i4, i5] = 0; 
        } 
       } 
      } 
      int i6 = 0; 
      char[,] chArr1 = new char[3, 3]; 
      for (int i7 = 0; i7 < rowsize; i7++) 
      { 
       for (int i8 = 0; i8 < colsize; i8++) 
       { 
        for (int i9 = 0; i9 < 3; i9++) 
        { 
         i6 += key[i7, i9] * iArr[i9, i8]; 
        } 
        char ch = (ushort)i6; 
        chArr1[i7, i8] = ch; 
        i6 = 0; 
       } 
      } 
      string s = String.Empty; 
      for (int i10 = 0; i10 < 3; i10++) 
      { 
       for (int i11 = 0; i11 < 3; i11++) 
       { 
        s = String.Concat(s, chArr1[i10, i11]); 
       } 
      } 
      return s; 
     } 

} // class Class1 

public public class Test 
{ 
    public static void Main() 
    { 
     Class1 a = new Class1("SWEETLORD-OlUXOmMhEiQO"); 
     System.Console.WriteLine(a.CreateTheCypher()); 
    } 
} 

다음은 컴파일러 오류 메시지가

prog.cs(9,24): error CS1519: Unexpected symbol `<' in class, struct, or interface member declaration 
prog.cs(9,28): error CS1519: Unexpected symbol `>' in class, struct, or interface member declaration 
prog.cs(9,45): error CS1519: Unexpected symbol `;' in class, struct, or interface member declaration 
prog.cs(15,23): error CS1525: Unexpected symbol `<' 
prog.cs(15,27): error CS1525: Unexpected symbol `>' 
prog.cs(19,16): error CS1525: Unexpected symbol `<' 
prog.cs(19,20): error CS1525: Unexpected symbol `>' 
+2

도대체 ''은 무엇을 의미합니까? 확실히 유효한 C# 구문은 아닙니다. – MarcinJuraszek

+0

을 제거하면이 원인이됩니다. – Bauss

+1

누군가가 작성한 것이 아니라 디 컴파일 된 소스처럼 보입니다. 일부 디 컴파일러는 컴파일러에서 생성 한 코드에 대해 유효하지 않은 소스 코드를 생성합니다. – Alejandro

답변

0

역 컴파일러 (.NET Reflector, IL Spy 등)가 생성 한 코드를 사용하고있는 것 같습니다. 컴파일 오류로 잘못된 점을 알 수 있습니다. '<'및 '>'과 같은 문자는 변수, 멤버 또는 클래스 이름에 사용할 수 없습니다.

<key>k__BackingField 또는 key_k__BackingField 또는 이와 비슷한 이름으로 바꾸면 적어도 위에서 나열한 오류가 제거됩니다.

0

을합니다. 회원 이름에 잘못된 문자가 있음을 나타냅니다. 회원 <key> k__BackingField은 (는) 유효하지 않으며 k__BackingField (으)로 바뀝니다.

private int[,] k__BackingField; 

    public int[,] key 
    { 
     get 
     { 
      return k__BackingField; 
     } 
     set 
     { 
      k__BackingField = value; 
     } 
    } 

참고 : 친구가 deassembler의 코드를 제공하므로 오류가 발생합니다. 위 코드를 업데이트하면 제대로 작동합니다.

+0

자동 속성 구문'public int [,] key {get; set;}'을 사용하는 것이 더 좋습니다.이 코드는 컴파일러가 autoproperties에 대한 스 니펫을 생성 한 것처럼 보입니다. – Alejandro