0

在我正在编写的 C# 应用程序中遇到的几个错误让我很开心。我不断收到的错误是:

  • 加密和解密调用必须有返回类型
  • Console.WriteLine 被用作方法
  • static void encrypt(string[] args) 预期的类、委托、接口或结构
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string pw ="", hash =""; //Declare an intialise variables

            if (args.Length < 4) // Test to see if correct number of arguments have been passed
            {
                Console.WriteLine("Please use command line arguments in this format: encrypt -e (or -d) password-to-encrypt-with input-file output-file");
                Environment.Exit(0);
            }

            if (args[1].Length < 10 || args[1].Length > 40) // Test to see if the password is between 10 and 40 characters
            {
                Console.WriteLine("Please use a password between 10 and 40 characters");
                Environment.Exit(0);
            }

            switch (args[0]) //Uses first argument value to drive switch statement (-e or -d)
            {
                case "-e":
                encrypt(string[] args);
                break;

                case "-d":
                decrypt(string[] args);
                break;

                default:
                Console.WriteLine("When using the program please use -e to encrypt and -d to decrypt");
                break;
            }        
        } //End of MAIN

        static void encrypt(string[] args)  //Function to encrypt
        {
            string inputtext =""; //Initialise Varible (Ensure it is empty)
            inputtext=System.IO.File.ReadAllText(args[2]); //Read file in an assign to input text
            return;
        }

        static void decrypt(string[] args)  //Function to decrypt
        {
            string inputtext =""; //Initialise Varible (Ensure it is empty)
            inputtext=System.IO.File.ReadAllText(args[2]); //Read file in an assign to input text
            return;
        }
    }  
}

任何帮助将非常感激!阿利斯泰尔

4

2 回答 2

11

调用方法时,不得指定参数的类型。所以:

        case "-e":
        encrypt(args);
        break;
于 2012-11-05T15:25:03.280 回答
2

除了 Hans 所说的,您还提到了有关方法中返回类型的错误。

您的encryptdecrypt方法有return语句,但它们是void方法,意味着它们没有任何返回类型。

要么给它一个你想要返回的类型(大概是你正在操作的字符串),要么完全删除该return语句。您不需要显式地放在return方法的末尾以使其退出该方法。无论如何它都会这样做。

两个小的专业提示,我会在不同的行上声明你的字段,而不是全部捆绑在一起(以你声明的方式pwhash),并且还添加一个 using 指令System.IO,所以你不必调用System.IO.File.ReadAllText,你可以调用File.ReadAllText

于 2012-11-05T15:44:34.160 回答