c# - 如果函数中的字段是静态的,则将函数声明为静态或非静态会有什么不同吗?

标签 c# static-members static

<分区>

    static int _i;
    static void Display()
    {
        //operates on _i;
    }

    static int _i;
    void Display()
    {
        //operates on _i;
    }

哪些场景需要具体说明方法的静态-非静态特性?

编辑;注意:这个问题与许多人似乎回答的静态和非静态方法之间的区别无关。问题是我应该担心差异的场景/用例是什么。为清楚起见,请参阅@ziesemer 的回答,该回答似乎恰好解决了这个问题。

最佳答案

有一个微小的区别,实例(非静态)版本是使用名为 this 的“隐藏”参数实现的。因为它不会被用来访问静态字段,所以在这里使用静态方法稍微更经济一些。

一般的建议是:如果一个方法可以是静态的,那么就让它成为静态的。但这更多的是关于表现出明确的意图,而不是表现。

关于c# - 如果函数中的字段是静态的,则将函数声明为静态或非静态会有什么不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8650147/

相关文章:

c# - 如何使授权属性返回自定义 403 错误页面而不是重定向到登录页面

c++ - 链接器为某些上下文中使用的完整静态常量成员提供错误 "undefined symbol"

c# - 如何区分同名的局部变量和静态变量

php - 在 PHP 中将静态方法作为参数传递

c# - 客户端验证错误

c# - 菜单和滚动条

c# - 表示 Day 的最大值为 32 的日期

Java 静态变量更新

Python 作用域/静态误解

c++ - 非静态函数 C++ 还剩下什么?