可能重复:
为什么私有字段是类型私有的,而不是实例私有的?
考虑以下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test
{
class Program
{
static void Main(string[] args)
{
Foo foo = new Foo();
Foo foo2 = new Foo();
foo.Test(foo);
Console.ReadLine();
}
}
public class Foo
{
public void Test(Foo foo)
{
Console.WriteLine("I was called");
foo.test_fuction();
}
private void test_fuction()
{
Console.WriteLine("!");
}
}
}
在这种情况下,我希望 private 关键字会阻止访问实例的成员变量和函数。这不会允许某人编写一些写得不好的对某些对象的迂回访问吗?有没有办法防止这种行为?还是出于充分的理由?