【问题标题】:Public class, but private member variables? [duplicate]公共类,但私有成员变量? [复制]
【发布时间】:2015-05-04 00:18:13
【问题描述】:

我仍然在用 C# 找到自己的脚,并且有一个问题困扰了我一段时间。

假设我写了一个类并定义了一个属性如下:-

public class Employee
{
    string FirstName {get; set;}
}

class Program
{
    private static object GetTheEmployee()
    {
        return new Employee{ FirstName = "Joe" }
    }
}

为什么在 GetTheEmployee 方法中无法使用 FirstName,但是当我将 Employee 类中的 FirstName 'string' 变量更改为 'public string' 时,它可以从 Program 类中访问。

我本来以为如果我将类的访问修饰符声明为public,那么类中的所有变量默认也是public的?

【问题讨论】:

标签: c#


【解决方案1】:

您将 class 声明为 public 的事实并不意味着 class 的所有成员也都是公开的。

默认情况下,类成员(字段、属性、方法等)具有private 访问修饰符,因此如果您没有将您的属性显式声明为public(或受保护、内部等),它将保持私密。

【讨论】:

  • 非常感谢您的回答。所以你将一个类声明为public的唯一原因是你可以实例化该类的一个对象,但这并不意味着你可以设置该类的变量?
  • @AngelaMarie-Daley 事实上,如果你想在包含它的程序集之外创建这个类的实例,类需要是公共的。默认情况下,类是内部的(并且可以在同一个程序集中实例化)。是的,类成员的访问修饰符独立于类访问修饰符。
【解决方案2】:

我还以为如果我将类的访问修饰符声明为public,那么类中的所有变量默认也是public的?

他们不会。类成员的默认访问修饰符是private。如果要使它们成为public,则需要明确指定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 2023-04-08
    • 1970-01-01
    • 2014-06-03
    • 2013-10-10
    • 1970-01-01
    • 2016-04-30
    相关资源
    最近更新 更多