c# 不能声明具有相同参数的静态和非静态方法?

标签 c# class methods

如果我尝试使用相同的参数声明静态和非静态方法,编译器将返回错误:类型“Test”已经定义了一个名为“Load”的成员,具有相同的参数类型。

    class Test
    {
        int i = 0;

        public int I
        {
            get { return i; }
            set { i = value; }
        }

        public bool Load(int newValue)
        {
            i = newValue;
            return true;
        }

        public static Test Load(int newValue)
        {
            Test t = new Test();
            t.I = newValue;
            return t;
        }

据我所知,这两种方法不能混合使用,非静态方法在对象上调用,而静态方法在类上调用,那么为什么编译器不允许这样的事情,有没有办法做类似的事情?

最佳答案

如果您的 Test 类有这样的方法:

public void CallLoad()
{
    Load(5);
}

编译器不知道要使用哪个 Load()。类成员完全允许调用没有类名的静态方法。

至于如何做类似的事情,我猜你最好的办法是给方法起相似但不同的名字,比如将 static 方法重命名为 LoadTest()LoadItem()

关于c# 不能声明具有相同参数的静态和非静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14316305/

相关文章:

javascript - JS 是否可以在一行中向 html 元素添加一些类并删除一些其他类?

C# 在按下按钮时跳出循环

c++ - 模板化成员函数的语法

Java传递变量和返回值

function - 我在哪里存储作用于对象数组的函数?

php - PHP const无法正常工作?

javascript - 获取方法外部的变量(对象)

c# - CosmosDB 仅访问用户的特定记录

C# 将复选框添加到 WinForms 上下文菜单

c# - 从 ASP.NET 启动外部进程