行,所以我明白离子VB6,在类封装的属性可以属于三种类别之一:是什么公共财产,朋友和公共变量在VB6的区别
- 公共财产
- 朋友
- 公共变量
的是这之间的区别,以及如何做这些比较公共和私人性质的更现代的语言如C#?
行,所以我明白离子VB6,在类封装的属性可以属于三种类别之一:是什么公共财产,朋友和公共变量在VB6的区别
的是这之间的区别,以及如何做这些比较公共和私人性质的更现代的语言如C#?
的范围预选赛Public
Friend
determine不同项目中的客户端是否可以看到该项目。
Public
项目将是客户端代码访问在其它项目 ,并在同一个项目代码。Friend
项目只能在同一个项目中编码,而不是以在其他项目中编码。Private
只有在同一课程中才可以访问这些项目。属性从公共变量不同的,因为性能可以当客户端获取或设置值执行自己的代码。 编辑以下Deanna的评论:还要注意,变量可以通过ByRef传递给一个函数,并且更改将按预期工作。属性不属于这种情况。
NB C#可能更现代化,但恕我直言,VB6处理属性和公共变量是significantly better比.Net处理。
恕我直言,微软公司在.Net中的属性和公共领域之间产生了一个真正的设计错误。不服气?在第一次发布.Net之后,C#和VB编译器被修改为支持automatically implemented properties。这些允许您只用一行代码创建属性,以便稍后可以在get/set上添加逻辑而不会导致问题。恕我直言,这证明公共变量应该与属性无法区分。
1假设你的项目类型实际上允许通过其他项目(即的ActiveX DLL,OCX或ActiveX EXE)使用你的类。
2在Property Get
,Property Let
和Property Set
程序中。
在VB6中,在类中定义的公共变量作为属性编译在封面下。这可以通过使用诸如OLE View之类的工具在编译后检查dll来查看。它们与您提到的“自动实施的属性”相同。 – tcarvin 2012-03-12 20:39:52
对不起,当我看到“在VB6中,您可以将公共变量转换为属性而不会破坏客户端”我认为这可能给OP带来的印象是VB6在公开变量中有公共变量。 – tcarvin 2012-03-13 11:50:22
另请注意,变量可以通过ByRef传递给函数,并且更改将按预期工作。属性不属于这种情况。我期望这就是为什么他们被分成.NET/IL中的字段和属性的原因。 – Deanna 2012-03-13 12:52:20
变量和财产的allmost相同。物业是首选,因为你可以设置,如果其它类可以设置或获取变量(属性封装了可变)
在C#中是一样的,只有你用内部,而不是朋友
私有财产是我们和其他家庭成员使用的财产。但是,公共财产是我们社区,社会或国家所有人使用的财产。
这种简单的比喻,但我认为它很好地描述了它。 – 2016-08-11 04:36:42
呃,你忘了私人财产。无论如何,通过阅读手册可以很容易地回答这个问题。 – Bob77 2012-03-12 22:22:30