2012-03-12 72 views
7

行,所以我明白离子VB6,在类封装的属性可以属于三种类别之一:是什么公共财产,朋友和公共变量在VB6的区别

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

的是这之间的区别,以及如何做这些比较公共和私人性质的更现代的语言如C#?

+3

呃,你忘了私人财产。无论如何,通过阅读手册可以很容易地回答这个问题。 – Bob77 2012-03-12 22:22:30

回答

9

范围预选赛PublicFrienddetermine不同项目中的客户端是否可以看到该项目。

  • Public项目将是客户端代码访问在其它项目 ,并在同一个项目代码。
  • Friend项目只能在同一个项目中编码,而不是以在其他项目中编码。
  • Private只有在同一课程中才可以访问这些项目。

属性公共变量不同的,因为性能可以当客户端获取或设置值执行自己的代码。 编辑以下Deanna的评论:还要注意,变量可以通过ByRef传递给一个函数,并且更改将按预期工作。属性不属于这种情况。

NB C#可能更现代化,但恕我直言,VB6处理属性和公共变量是significantly better比.Net处理。

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

恕我直言,微软公司在.Net中的属性和公共领域之间产生了一个真正的设计错误。不服气?在第一次发布.Net之后,C#VB编译器被修改为支持automatically implemented properties。这些允许您只用一行代码创建属性,以便稍后可以在get/set上添加逻辑而不会导致问题。恕我直言,这证明公共变量应该与属性无法区分。


1假设你的项目类型实际上允许通过其他项目(即的ActiveX DLL,OCX或ActiveX EXE)使用你的类。
2在Property Get,Property LetProperty Set程序中。

+0

在VB6中,在类中定义的公共变量作为属性编译在封面下。这可以通过使用诸如OLE View之类的工具在编译后检查dll来查看。它们与您提到的“自动实施的属性”相同。 – tcarvin 2012-03-12 20:39:52

+0

对不起,当我看到“在VB6中,您可以将公共变量转换为属性而不会破坏客户端”我认为这可能给OP带来的印象是VB6在公开变量中有公共变量。 – tcarvin 2012-03-13 11:50:22

+1

另请注意,变量可以通过ByRef传递给函数,并且更改将按预期工作。属性不属于这种情况。我期望这就是为什么他们被分成.NET/IL中的字段和属性的原因。 – Deanna 2012-03-13 12:52:20

2
  • 公共表示它可以被任何其他类别访问 拒绝您的项目/ dll。
  • 朋友意味着它是你的汇编内 任何其他类访问(所以只有exe文件所做的 类)

变量和财产的allmost相同。物业是首选,因为你可以设置,如果其它类可以设置或获取变量(属性封装了可变)

在C#中是一样的,只有你用内部,而不是朋友

1

私有财产是我们和其他家庭成员使用的财产。但是,公共财产是我们社区,社会或国家所有人使用的财产。

+0

这种简单的比喻,但我认为它很好地描述了它。 – 2016-08-11 04:36:42