VB6中的公共属性,朋友和公共变量有什么区别

JMK*_*JMK 9 vb6 encapsulation class

好的,所以我理解离子VB6,类中的封装属性可以属于以下三种类别之一:

  • 公共财产
  • 朋友
  • 公共变量

这些以及它们与C#等更现代的语言中的公共和私有属性相比有何区别?

Mar*_*rkJ 13

范围限定词 Public,并Friend 确定在不同的项目客户端是否可以看到该项目.

  • Public项目将在其他项目1中的 客户端代码同一项目中的代码中访问.
  • Friend项目只能访问同一项目中的代码,而不能访问其他项目中的代码.
  • Private 只有同一类中的代码才能访问这些项.

属性公共变量不同,因为对于属性,您可以在客户端获取或设置值2时执行自己的代码.按照Deanna的评论编辑:还要注意变量可以通过ByRef传递给函数,并且更改将按预期工作.属性并非如此.

NB C#可能更现代,但恕我直言VB6处理的属性和公共变量明显优于 .Net处理.

  • 在VB6中,您可以将公共变量更改为属性而不会破坏客户端.您甚至不必重新编译它们.在.Net中不正确.
  • 在VB6中,公共变量可以与数据绑定一起使用.在.Net中不正确.
  • 在VB6中,公共变量可以与接口一起使用.在.Net中不正确.

恕我直言微软在.Net中创建属性和公共字段之间的这些差异时犯了一个真正的设计错误.不相信?在.Net的第一个版本之后,修改了C#VB编译器以支持自动实现的属性.这些允许您只在一行代码中创建属性,以便以后可以在get/set上添加逻辑而不会导致问题.恕我直言,这证明公共变量应该与属性无法区分.


1假设您的项目类型实际上允许您的类被其他项目(即ActiveX DLL,OCX或ActiveX exe)使用.
2在Property Get,Property LetProperty Set程序.