我刚刚遇到了一个未知的c#概念。 谁能告诉我内部集合属性的目的是什么? 有什么用? 我知道内部关键字用于在程序集中工作。
答案 0 :(得分:60)
如果你有一个带有内部set访问器(和public get访问器)的属性,则意味着程序集中的代码可以读取(获取)和写入(设置)属性,但其他代码只能读取它。
您可以通过阅读internal access modifier,public access modifier和properties来获取上述信息。
另外,您可以阅读Restricting Accessor Accessibility。
答案 1 :(得分:9)
在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;
}
}
通过这种方式,您可以预设一些参数并使它们对于代码中的其他程序集只读。