无法在非静态上下文中访问静态方法

MrS*_*sco -2 c# methods static-methods function

我刚刚开始我的C#编程中级课程,我正在学习如何创建多个类并创建在我的程序中使用的方法.

这对我来说是一个非常新的话题,所以如果它是非常明显或愚蠢的话我会道歉.我在所有方法中都得到了以下信息:

Cannot access static method in non-static context
Run Code Online (Sandbox Code Playgroud)

方法类中的代码:

public static int Add(params int[] numbers) {
        var sum = 0;

        foreach (var n in numbers) {
            sum += n;
        }

        return sum;
    }

    public static int Subtract(params int[] numbers) {
        var sum = 0;

        foreach (var n in numbers) {
            sum -= n;
        }

        return sum;
    }

    public static int Multiply(params int[] numbers) {
        var sum = 0;

        foreach (var n in numbers) {
            sum *= n;
        }

        return sum;
    }

    public static int Divide(params int[] numbers) {
        var sum = 0;

        foreach (var n in numbers) {
            sum /= n;
        }

        return sum;
    }

    public static string[] CheckingOfSomeSort(string userInput, int value, bool isAddition, bool isSubtraction, bool isDivision, bool isMultiplication) {
        if (userInput.Contains("+")) {
            var addition = userInput.Split('+');
            value = 1;
            isAddition = true;
            return addition;
        } else if (userInput.Contains("-")) {
            var subtraction = userInput.Split('-');
            value = 2;
            isSubtraction = true;
            return subtraction;
        } else if (userInput.Contains("*")) {
            var multiplication = userInput.Split('*');
            value = 3;
            isMultiplication = true;
            return multiplication;
        } else if (userInput.Contains("/")) {
            var division = userInput.Split('/');
            value = 4;
            isDivision = true;
            return division;
        }

        return null;
    }
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个计算器(我已经完成了,但是我现在正尝试使用方法)

Ami*_*mit 5

按照您的意见我知道你正在创建的一个对象CalculatorMethods,你试图调用类使用这个对象,它是静态的方法.

我对问题的评论:

这些方法都是静态的.(以及它们的使用方式也应该是静态的).但是静态方法不能使用Class的对象访问,而是直接使用类的类型.这里我猜测CalculatorMethods是哪种方法的类,你会尝试做一些像calc.Add()..这是不可能的.而是做CalculatorMethods.Add()

相反,您可以通过直接调用类似belwo来尝试它,

    void MethodOfCalling()
    {
        int sum = CalculatorMethods.Add(new int[2] { 1, 2 });
    }
Run Code Online (Sandbox Code Playgroud)

你可以看到,我使用CalculatorMethods(一个类名 - 更恰当地说类的类型)来调用方法而不是类的对象.