【发布时间】:2012-02-24 20:34:38
【问题描述】:
我在理解访问修饰符时遇到了一些麻烦;我想更好地了解何时使用什么级别的访问权限,尤其是对于属性 - 只是指向关于该主题的 好 教程的链接可能是它自己的问题。
但更具体地说,我不明白为什么绑定到 WinForm 控件的对象必须是公共的。所以我创建了我的对象:
public class Foos : List<Foo>
{
}
public class Foo
{
private int bar;
public int Bar
{
get { return bar; }
set { bar = value; }
}
}
然后将其绑定到DataGridView
public partial class Form1 : Form
{
private Foos formFoos;
public Form1()
{
InitializeComponent();
formFoos = new Foos();
AddFoo();
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = formFoos;
}
/// <summary>
/// generate some test values
/// </summary>
private void AddFoo()
{
for (int i = 1; i <= 5; i++)
{
Foo foo = new Foo();
foo.Bar = 5 * i;
formFoos.Add(foo);
}
}
}
工作正常。但是如果我不想在我的程序集中公开Foo.Bar 怎么办?如果我做到internal int Bar,我会得到一个空的dataGridView1。如果我让它protected 我得到一个编译器错误,因为当然 Form1 不是从 Foo 派生的。
我的程序中表单中的控件如何与internal 的定义不匹配?
内部成员只能在同一个文件中访问 组装。
也欢迎您以系统的方式做出这些声明的一般智慧。
【问题讨论】: