в чем разница между внутренним и частным - PullRequest
4 голосов
/ 18 мая 2011

В F # в чем разница между внутренним методом и закрытым методом.

У меня такое ощущение, что они реализованы одинаково, но означают что-то другое.

Ответы [ 3 ]

10 голосов
/ 18 мая 2011

Доступ к методу 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
2 голосов
/ 19 мая 2011

internal такой же, как public, за исключением того, что он виден только внутри сборки, в которой он удален. Private виден только внутри декларирующего типа.

0 голосов
/ 29 июня 2011

внутренние экземпляры могут быть доступны в рамках одной и той же сборки, тогда как частные экземпляры могут быть доступны "ТОЛЬКО" в определяющем классе .

...