为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕村225694 2021-07-07 17:32:36
我最近刚开始我的 C# 编程中级课程,我正在学习如何创建多个类和创建在我的程序中使用的方法。这对我来说是一个非常新的话题,所以如果这是非常明显或愚蠢的事情,我深表歉意。我在所有方法中都收到以下消息:Cannot access static method in non-static context方法类中的代码: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;    }我正在尝试创建一个计算器(我已经完成了,但是我现在正在尝试使用方法)
查看完整描述

3 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

根据您的评论,我知道您正在创建一个对象,CalculatorMethods并且您正在尝试使用该对象调用该类的静态方法。

我对问题的评论:

这些方法是静态的。(以及它们的使用方式,它们也应该是静态的)。但是静态方法不能用 Class 的对象访问,而是直接用类的 Type 访问。在这里,我猜 CalculatorMethods 是方法所在的类,您将尝试执行诸如 calc.Add() 之类的操作。这是不可能的。而是做 CalculatorMethods.Add()

相反,您可以通过像 belwo 一样直接使用 Type 调用来尝试它,

void MethodOfCalling()

    {

        int sum = CalculatorMethods.Add(new int[2] { 1, 2 });

    }

你可以看到,我已经使用CalculatorMethods(一个类名 - 更准确地说是类的类型)来调用方法而不是类的对象。


查看完整回答
反对 回复 2021-07-10
?
慕后森

TA贡献1802条经验 获得超5个赞

要调用静态方法,您需要从定义它的类中引用它,而不是从该类的实例中引用它。例如:


Calculator.Divide(); // works 



Calculator obj = new Calculator(); 

obj.Divide(); // Not works


NOTE : Divide() is a static method


查看完整回答
反对 回复 2021-07-10
  • 3 回答
  • 0 关注
  • 235 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信