在class中,c#中实例变量和不带修饰符的变量有什么区别

In a class, what is the difference between instance variable and variable without modifier in c#

在下面的代码中:

public class Foo
{
  private object first;  

  object second;

  public void Bar()
  {
    first = "1234";

    second = "1234";
  }
}

两种声明有什么区别?我是 OOP 的新手,想知道有什么不同......

谢谢

What is the difference between two declaration?

没什么,因为这是 C#。一般来说,如果你在 C# 中声明任何东西而不使用访问修饰符,它相当于为那个地方使用最私有的有效访问修饰符1.

所以是的,声明

private object first;

等同于

object first;

就个人而言,我更喜欢明确说明访问修饰符 - 其他人更喜欢尽可能简洁。


1 一个例外是为 属性 的 part 指定访问修饰符。那必须比 属性 本身更私密;如果您没有在此处指定访问修饰符,则它隐式地与 属性 本身具有相同的访问权限。

这将被标记为重复,但无论如何我都会回答。

这两个都是您正在定义的 class 的实例变量。它们只会在创建此 class 的实例时存在于内存中。

这两个变量之间没有区别。默认情况下,class/struct 没有访问修饰符的成员是私有的,明确说明一个是私有的和不使用修饰符是等价的,但最佳做法是始终指定应允许您的 members/methods