在Delphi中,`private`修饰符很可能是唯一的:
你可能会认为这有C#的等价物:
因为这样,汇编中的其他代码可以看到或调用
C#是否支持某种单元友元或单元内部访问修饰符?
Contoso = class
private
procedure DoStuff();
end;
你可能会认为这有C#的等价物:
class Contoso
{
private void DoStuff()
{
}
}
但在Delphi中,private
关键字更像是单元友好型。换句话说,同一代码文件中的其他类可以访问私有成员。将Delphi转换为C#,等效于以下代码可正常工作:
public class Contoso
{
private void DoStuff()
{
}
}
internal class Fabrikam
{
Contoso _contoso;
//constructor
Fabrikam()
{
_contoso = new Contoso();
_contoso.DoStuff(); //i can call a private method of another class
}
}
虽然方法 DoStuff
是私有的,只能在Contoso
类中调用,但是在同一文件中的其他类可以调用该方法。
我不想将该方法改为 internal
:
class Contoso
{
internal void DoStuff();
}
因为这样,汇编中的其他代码可以看到或调用
DoStuff
方法,而我不想要这种情况。
C#是否支持某种单元友元或单元内部访问修饰符?
.cs
文件中不会放置多于一个类或接口,因此我真的看不出这样做的意义所在。对我来说,这听起来更像是命名空间的一种变通方法。 - Federico Berasategui