公共类,但私有成员变量?

问题描述:

我仍然在用C#找到自己的脚,并且有一个快速问题,一直在困扰着我。公共类,但私有成员变量?

说我写一个类,定义一个属性如下: -

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

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

为什么GetTheEmployee方法中使用姓的交通不便,但是当我改变了名字“字符串”变量在Employee类'公共字符串',而是可以从Program类访问。

我会想,如果我声明类的访问修饰符为public,那么类中的所有变量默认情况下都是公共的?

+0

它是私人的。 – 2015-03-03 11:09:21

+0

http://*.com/questions/12392876/class-vs-public-class – Jens 2015-03-03 11:10:15

+0

默认(不指定)为类成员是私人的。该类的默认值是内部的。 https://msdn.microsoft.com/en-us/library/ms173121.aspx – 2015-03-03 11:12:15

您宣布课程为public的事实并不意味着所有课程的成员都将公开。

默认情况下,类成员(字段,属性,方法等)具有private访问修饰符,所以如果你还没有明确宣布你的财产public(或保护,内部等),这将是私有的。

+1

非常感谢您的回答。所以你声明一个类public的唯一原因是你可以实例化一个类的对象,但这并不意味着你可以设置该类的变量? – 2015-03-03 11:26:42

+0

@ AngelaMarie-Daley事实上,如果你想在包含它的程序集之外创建这个类的实例,类需要公开。默认情况下,类是内部的(并且可以在同一个程序集中实例化)。是的,类成员的访问修饰符独立于类访问修饰符。 – 2015-03-03 11:36:05

我会想,如果我声明类的访问修饰符为public,那么类中的所有变量也将默认为公共的?

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