小编Sou*_*ata的帖子

由于阴影,我关键字无法在派生类中执行子例程

我在理解ShadowsMe. 下面是我写的代码:

Module Module1
    Sub main()
        Dim c As New Customer()
        c.UseMe() 'See item 1 
        Console.WriteLine("----")
        c.DoSomething()
        Console.ReadLine()
    End Sub
End Module

Public Class Person
    Public Sub DoSomething()
        Console.WriteLine("Person")
    End Sub

    Public Sub UseMe()
        Me.DoSomething() 'See item 2
        'See item 3
    End Sub
End Class

Public Class Customer
    Inherits Person

    Public Shadows Sub DoSomething()
        'See item 4
        Console.WriteLine("Customer")
    End Sub
End Class
Run Code Online (Sandbox Code Playgroud)

以下是我期望它的工作方式(但它没有):

  1. c是派生类的对象,但调用类中的UseMe方法Person
  2. Me关键字表现得像一个对象指的是当前实例(在这种情况下是c
  3. 因此Me.DoSomething = …

vb.net

1
推荐指数
1
解决办法
62
查看次数

为什么在 VB.Net 中定义属性时要使用 GET 和 SET 方法?

我对在 VB.net 中使用 GET 和 SET 方法的需要感到有点困惑。我想讨论这方面的两种情况:首先,当我们将属性声明为 PUBLIC 时,接下来,当我们将属性声明为 PRIVATE 时。

我发现当我将一个属性定义为 public 时,我可以直接设置和访问该属性的值,而无需使用 GET/SET 方法 --- 非常简单:见下文

Module Program
    Sub Main()
        Dim t As New test()
        t.name = "Roy" 'Label 1
        Console.WriteLine("t.name = {0}", t.name)
        Console.ReadLine()
    End Sub
End Module

Class test
    Public Property name() As String
End Class
Run Code Online (Sandbox Code Playgroud)

当我将同一属性声明为私有时,如下所示,我仍然可以通过简单地使用构造函数和公共子例程来设置和访问私有属性的值。见下文:

Module Program
    Sub Main()
        Dim t As New test()
        t.printValue()
        Console.ReadLine()
    End Sub
End Module

Class test    
    Private Property Name() As String 
    Sub New()
        Name = "Roy" 'Label 2 …
Run Code Online (Sandbox Code Playgroud)

vb.net

0
推荐指数
1
解决办法
985
查看次数

标签 统计

vb.net ×2