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

Ami*_*oni 40 c#

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

Geo*_*ett 63

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

您可以通过阅读内部访问修饰符,公共访问修饰符属性来获取上述信息.

此外,您还可以阅读有关限制访问者辅助功能的信息.

  • +1,此外我可能想要添加到你的答案,我已经看到在两个场景中使用的内部集:1)"隐藏"东西,这可能不是一个好的方法来做到这一点,并指向设计流程和2.)单元测试目的 (3认同)
  • UrbanEsc 我同意这似乎指向一个设计缺陷,大多数时候你会看到它。我刚刚在我正在使用的一些代码中遇到了这个问题,它似乎是与另一个类的依赖关系的来源(是内部的,所以它可以克服私有的访问限制。)你必须想知道为什么人们选择诸如这在一些更明显的事情上。 (2认同)

sha*_*net 10

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; }
}
Run Code Online (Sandbox Code Playgroud)


Isa*_*ker 10

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

public class Foo
{
   public string Bar { get; internal set; }
}
Run Code Online (Sandbox Code Playgroud)


Roc*_*oC5 5

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

public string MyProperty { get; internal set; }
Run Code Online (Sandbox Code Playgroud)