![]() |
1
5
属性结合了字段和方法的概念。事实上,属性的访问方式与字段类似,但底层代码是方法。属性的field部分允许您访问一个值,就像field一样,尽管我可以说,它允许您欺骗这个getter函数和setter过程。属性最常用于控制分配或返回的字段值。冒着重复我自己的风险,它们被作为一个字段访问。
另一方面,函数、过程,在OOP中都称为方法,都是按定义处理信息的例程。需要在对象或信息块上有一个进程,例如,遇到类似
我想补充一点,据我所知,属性不能是匿名的,也不能是泛型的。注意,我不是说属性不能返回泛型,而是说属性本身不能是泛型。函数可以是
|
![]() |
2
15
区别在于语义上的功能性;属性getter实际上是一个隐藏的功能。区别更大的是,作为程序员,您经常希望调用属性getter是一个非常便宜的操作,而调用函数可能会更昂贵。 请注意,这不一定是这样;您可以很好地实现非常轻量级的函数和非常重的属性getter,但根据经验,属性getter通常只需获取值就可以了。 |
![]() |
3
9
如果使用数据绑定,有一个重要的区别,就是不能绑定到方法,只能绑定到属性。 |
![]() |
4
6
整个属性的设计可能是为了避免获得一堆单独的GetSomething(),SetSomething(var x)方法,这些方法在2000年代早期的Java中是数据访问的标准。这样可以避免公开的变量。 相信我,那些课看起来糟透了。我个人认为,物业概念是可读性和结构上的一个飞跃。 |
![]() |
5
2
是的,属性只是Set/Get方法之上的一个高级概念。 |
![]() |
6
2
属性与函数相同。 不 费时的函数f.e.计算某事或查询数据库。 因此,它们是一种有用的语法糖(如果实现正确)。 |
![]() |
7
2
get属性应该是纯属性,如果查看.net代码契约,就会发现它们假定getter是纯属性。因此,调用一次get属性、两次get属性或10次get属性都不应该与对象有任何区别,因为在对象上调用方法可能会导致对对象状态的多次更改。 |
![]() |
8
1
get/set属性是syntaccit sugar。VB中的Readonly只是一种指定只需要get“函数”的方法 然后,它看起来像应该通过引用传递属性(ByRef)给方法,但正如您指出的,它是一个函数而不是实际类型。
|
![]() |
9
1
我想补充一点,作为使用属性的一个con,序列化理解属性的概念并使用它们,而它对getter/setter方法一无所知。
您可以从源文件中留出相当多的代码行,使它们更具可读性。 |
|
10
0
关键字readonly的意思是“亲爱的编译器不要指望一个setter”,如果我这样做了,惩罚我”。这是VB语法的决定。后台函数和属性getter是相同的。 |
![]() |
11
0
类的正常调试监视窗口将显示非索引属性的值,但不会显示函数的结果。我对StringBuilder类最讨厌的一点是,它没有当前字符串内容的属性,这使得监视窗口的用处远不如以前。 另外,与方法不同的是,非索引属性不需要在名称后面加一个();我相信C#中的索引属性需要使用[]而不是()作为参数。 |
![]() |
12
0
我刚刚意识到你可以用一个属性发送参数,就像你用方法发送一样。这意味着您可以编写如下内容:
然后你可以写下:
或者这里有另一个方法来验证设置为任何标签控件的文本:
然后你可以这样使用它:
我不确定的是,这是否被认为是一种“良好做法”,或至少是一种“正确”使用财产的做法。 |
![]() |
Adam · 分配内存块的不相交性? 7 年前 |
![]() |
Koray Tugay · 什么是规范? 9 年前 |
![]() |
Andy · 如何记录Scrum/敏捷/TDD过程中未定义的行为[已关闭] 10 年前 |
![]() |
eento · 使用where&和运算符动态链接规范 10 年前 |