公共类,但私有成员变量? [复制]
Posted
技术标签:
【中文标题】公共类,但私有成员变量? [复制]【英文标题】: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的?
【问题讨论】:
***.com/questions/12392876/class-vs-public-class 类成员的默认(未指定)是私有的。类的默认值是内部的。 msdn.microsoft.com/en-us/library/ms173121.aspx 【参考方案1】:您将 class 声明为 public
的事实并不意味着 class 的所有成员也都是公开的。
默认情况下,类成员(字段、属性、方法等)具有private
访问修饰符,因此如果您没有将您的属性显式声明为public
(或受保护、内部等),它将保持私密。
【讨论】:
非常感谢您的回答。所以你将一个类声明为public的唯一原因是你可以实例化该类的一个对象,但这并不意味着你可以设置该类的变量? @AngelaMarie-Daley 事实上,如果你想在包含它的程序集之外创建这个类的实例,类需要是公共的。默认情况下,类是内部的(并且可以在同一个程序集中实例化)。是的,类成员的访问修饰符独立于类访问修饰符。【参考方案2】:我还以为如果我将类的访问修饰符声明为public,那么类中的所有变量默认也是public的?
他们不会。类成员的默认访问修饰符是private
。如果要使它们成为public
,则需要明确指定。
【讨论】:
以上是关于公共类,但私有成员变量? [复制]的主要内容,如果未能解决你的问题,请参考以下文章