类(Class)里属性(Property)和 直接变量 什么区别?

stevenhzhang 2009-01-09 03:00:38
一个是直接变量

Class Person
Public Age As Integer

Public Sub PrintAge()
HttpContext.Current.Response.Write(Age)
End Sub
End Class


还有一个就是用属性

Class Person
Private _Age As Integer

Public Property Age() As Integer
Get
Return (Me._Age)
End Get
Set(ByVal value As Integer)
Me._Age = value
End Set
End Property


Public Sub PrintAge()
HttpContext.Current.Response.Write(Me._Age)
End Sub
End Class


在外面都可以用:


Dim student As Person = New Person()
student.Age = 10
student.PrintAge


输出的结果一样。两者,除了property可以控制ReadOnly和WriteOnly,从执行性能或物理格式上是不是有区别?
...全文
206 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zorou_fatal 2009-01-09
  • 打赏
  • 举报
回复
要从OO的角度来考虑问题。
Jinglecat 2009-01-09
  • 打赏
  • 举报
回复
对于 private/public ... 都是一样的, field 和 property 都可以用

性能上,访问方法当然会比直接访问变量慢,相对封装带来的好处,来说这个损失可以忽略不计,这里的性能损失,我们一般只会放在最后考虑的;


Jinglecat 2009-01-09
  • 打赏
  • 举报
回复
Property 实际上 method

getter , setter 分别编译成类似 get_XXX 和 set_XXX 方法

// C#
[modifier] [type] get_PropertyName()
{
// ...
return ..
}

[modifier] void set_PropertyName([type] value)
{
// ....
someFieldName = value;
}
sharpblade 2009-01-09
  • 打赏
  • 举报
回复
变量private,不向外暴露,
而属性用public,提供给外部使用.
muxinpp 2009-01-09
  • 打赏
  • 举报
回复
属性其实是方法,变量就是变量

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧