VB.NET中的类字段可以在没有Getter&Setter吗?

时间:2018-08-23 14:57:04

标签: c# vb.net oop properties getter-setter

在VB.NET中,我注意到我可以通过使用Property关键字,后跟属性名称和数据类型来直接创建属性,而无需使用getter和setter方法,尽管我不能这样做。 C#!

尽管如此,该属性似乎已经封装好了,就像我将其放入getter和setter方法一样!

请看下面的屏幕截图。

enter image description here

在上面的屏幕截图中,我所谈论的属性是 number1 ,并且我创建了另一个封装在名为 number2 的getter和setter方法中的属性。

然后,我在Class2中创建了Class1的新实例,但是我注意到 number1 属性只有在创建了该类的实例之后才公开就像封装在诸如 number2 属性之类的getter和setter方法中一样!

有什么解释吗?

2 个答案:

答案 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”)的方法/字段/属性