在VB.NET中,我注意到我可以通过使用Property关键字,后跟属性名称和数据类型来直接创建属性,而无需使用getter和setter方法,尽管我不能这样做。 C#!
尽管如此,该属性似乎已经封装好了,就像我将其放入getter和setter方法一样!
请看下面的屏幕截图。
在上面的屏幕截图中,我所谈论的属性是 number1 ,并且我创建了另一个封装在名为 number2 的getter和setter方法中的属性。
然后,我在Class2中创建了Class1的新实例,但是我注意到 number1 属性只有在创建了该类的实例之后才公开就像封装在诸如 number2 属性之类的getter和setter方法中一样!
有什么解释吗?
答案 0 :(得分:4)
这称为“自动属性”,在VB.NET documentation中已明确定义:
Public Property Name As String
Public Property Owner As String = "DefaultName"
Public Property Items As New List(Of String) From {"M", "T", "W"}
Public Property ID As New Guid()
所有具有getter和setter(以及自动创建的后备字段)的自动属性。
C#要求您使用{get; set;}
,但基本上是相同的(因为C#没有Property
关键字,它需要一些东西来区分字段和属性,因此{ {1}}这样做。 C#稍有不同,尽管您可以定义不带{get; set;}
...
{get; set;}
相当于
public int MyProperty => 10;
答案 1 :(得分:1)
但是我注意到直到我发现了number1属性 创建了一个与该类相同的类的实例 封装在诸如number2属性之类的getter和setter方法中!
在创建该类的实例(不包括方法,字段或属性)之前,什么都没有公开!这与getter / setter或属性无关...只是您的基本OOP
唯一的例外是带有“ shared”关键字(在c#中为“ static”)的方法/字段/属性