非静态字段方法或属性需要对象引用

问题描述 投票:0回答:1

我在调用方法encrpyt时遇到问题。它显示错误CS0210“非静态字段,方法或属性需要对象引用”。我试图通过在encrpyt方法中添加'static'关键字来纠正此问题,但是它也没有起作用。如何解决这个问题?

class Program
{
    string alphabet = "ABCDEFGHIJKLMNOPQRSTYVWXYZ";
    string alph = "abcdefghijklmnopqrstuvwxyz";
    static void Main(string[] args)
    {
        Console.WriteLine("Input text to encrypt: ");
        string text = Console.ReadLine();
        Console.WriteLine("Input key: ");
        string key = Console.ReadLine();

        encrypt(text, key);
        Console.ReadLine();
    }

    int positionAlphabet(char letter)
    {
        for (int i = 0; i < alphabet.Length; i++)
        {
            if (alphabet[i] == letter || alph[i] == letter)
            {
                return i;
            }
        }
        return -1;
    }
    public void encrypt(string text, string key)
    {
        string output = "";

        for (int i = 0; i < text.Length; i++)
        {
            int positionLetterKey = positionAlphabet(key[i % key.Length]);
            int positionLetterText = positionAlphabet(text[i]);
            output += alphabet[(positionLetterText + positionLetterKey) % alphabet.Length];
        }
        Console.WriteLine("Encryption output: \n", output);
    }
}
c#
1个回答
1
投票

您还应该在PositionAlphabet函数之前添加一个静态关键字。您不能从另一个静态函数调用非静态函数。

© www.soinside.com 2019 - 2024. All rights reserved.