c#中的内部设置属性是什么?

时间:2011-08-25 09:14:17

标签: c#

我刚刚遇到了一个未知的c#概念。 谁能告诉我内部集合属性的目的是什么? 有什么用? 我知道内部关键字用于在程序集中工作。

8 个答案:

答案 0 :(得分:60)

如果你有一个带有内部set访问器(和public get访问器)的属性,则意味着程序集中的代码可以读取(获取)和写入(设置)属性,但其他代码只能读取它。

您可以通过阅读internal access modifierpublic access modifierproperties来获取上述信息。

另外,您可以阅读Restricting Accessor Accessibility

答案 1 :(得分:9)

Properties in C# 2.0

在C#2.0中,您可以设置get和set的可访问性。

下面的代码显示了如何使用内部集和公共get创建私有变量。 Hour属性现在只能从同一模块(dll)中的代码设置,但可以由使用包含该类的模块(dll)的所有代码访问。

// private member variables
private int hour;

// create a property
public int Hour
{
  get { return hour; }
  internal set { hour = value; }
}

答案 2 :(得分:7)

假设您正在设计一个供其他程序员使用的API。在此API中,您有一个对象Foo,其具有属性Bar。您不希望其他程序员在引用程序集时设置Bar的值,但您需要自己在API中设置值。只需声明财产:

public class Foo
{
   public string Bar { get; internal set; }
}

答案 3 :(得分:3)

给定一个声明为public string MyString {get; internal set;}的属性,这意味着

  • 您可以在任何地方 读取 ,而不是您的应用程序(public string MyString
  • 但您只能从声明它的 <或>从友元组件中>向该属性写入新值。 (internal set;

答案 4 :(得分:2)

如果使用内部访问修饰符标记属性设置器,则只有驻留在程序集中的类才能设置该属性。

public string MyProperty { get; internal set; }

答案 5 :(得分:1)

这意味着该属性只能由与delcaring属性相同的程序集中的代码设置。

答案 6 :(得分:1)

它是一个允许仅通过同一程序集中的代码设置属性值的构造。

答案 7 :(得分:1)

它通常与类似

的构造函数一起使用
public class CustomerConfig
{
     public string CustomerName { get; internal set; }
     public CustomerConfig(string customerName)
     {
        this.CustomerName = customerName;
     }
}

通过这种方式,您可以预设一些参数并使它们对于代码中的其他程序集只读。