C# C语言中的编译时错误

C# C语言中的编译时错误,c#,compiler-errors,C#,Compiler Errors,我是C语言的新手,不知道下面的代码有什么问题。这个密码是我朋友给我的。基本上,它是一个根据程序对字符串进行加密的程序。请帮我修一下。我将非常感激 using System; using System.Linq; using System.Runtime.CompilerServices; class Class1 { // error lies in these 10 lines mainly. private int[,] <key>

我是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 `>'

如果您查看错误,您将识别错误。它表明成员名称中有一些无效字符。您的成员k__BackingField无效,请替换为k_BackingField


注意:您的朋友从deassembler向您提供了代码,因此它会给您该错误。请更新上述代码,它将正常工作。

看起来您正在使用由反编译器.NET Reflector、IL Spy等生成的代码。编译错误会告诉您错误所在-变量、成员或类的名称中不允许使用字符等


将k_ubackingfield重命名为key_uk_ubackingfield或类似的名称将至少删除上面列出的错误。

这到底是什么意思?这绝对不是一个有效的C语法。Remove是导致这种情况的原因。看起来像是一个反编译的源代码,而不是由某人编写的。少数反编译器为编译器生成的代码生成这样无效的源代码。@MarcinJuraszek,最初它是公共int[,]键{get;set;}-然后,C编译器生成一个属性名,该属性名不是合法的C,而是合法的IL,这样就不会与用户定义的变量发生冲突,因此用户只能通过反射才能处理编译器生成的代码。我们怎么知道这不是请求帮助对商业产品的许可代码进行反向工程的人?甚至更好的方法是使用自动属性语法public int[,]key{get;set;}这段代码看起来就像是编译器为自动属性生成的代码段。
    private int[,] k__BackingField;

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