在 F# 中,内部方法和私有方法有什么区别。
我有一种感觉,它们的实现方式相同,但含义不同。
可以internal
从同一 .NET 程序集中的任何类型(或函数)访问方法。只能从声明它的类型访问方法
。private
这是一个显示差异的简单片段:
type A() =
member internal x.Foo = 1
type B() =
member private x.Foo = 1
let a = A()
let b = B()
a.Foo // Works fine (we're in the same project)
b.Foo // Error FS0491: 'Foo' is not defined
internal 与 public 相同,不同之处在于它仅在它所在的程序集内可见。 Private 仅在声明类型内可见。
内部实例可以在同一个程序集中访问,而私有实例只能在定义类中访问。