Струнная печать несколько раз, кроме последнего раза?

Вот мой код

Module Module1
    Private Delegate Sub word(ByVal A As String, ByVal B As String, C As String)
    Dim A, B, C As String
    Sub Main()
        Console.WriteLine("type something")
        A = Console.ReadLine()
        Console.WriteLine("type something else")
        B = Console.ReadLine()
        Console.WriteLine("type something else")
        C = Console.ReadLine()
        Dim objword As New word(AddressOf first)
        objword(A, B, C)
        first(A, B, C)
        objword = New word(AddressOf Second)
        objword(A, B, C)
        Second(A, B, C)
        objword = New word(AddressOf third)
        objword(A, B, C)
        third(A, B, C)
    End Sub
    Sub first(ByVal A As String, ByVal B As String, C As String)
        Console.WriteLine(A)
    End Sub
    Sub Second(ByVal A As String, ByVal B As String, C As String)
        Console.WriteLine(B)
    End Sub
    Sub third(ByVal A As String, ByVal B As String, C As String)
        Console.WriteLine(C)
        Console.ReadKey()
    End Sub

End Module

Когда я запускаю его, он печатает строку A и B дважды, а строку C - только один раз. Однако, если я нажимаю Enter, он печатает строку C во второй раз. Я знаю, что console.readkey делает это.

Мои вопросы:
Почему строки печатаются дважды?
Почему console.readkey предотвращает печать последней строки?
Как сделать так, чтобы строки печатались только один раз?

Редактировать: перемещая console.readkey в конец sub main, все строки печатаются дважды

1 ответ

Решение

Потому что вы звоните это:

 objword(A, B, C)
 first(A, B, C)

objword указывает на first метод. Вы повторяете это и для других методов. Вопрос действительно в том, почему ты это делаешь?

Просто выполните это:

first(A,B,C)

Делегату нет необходимости просто выполнять метод.

Другие вопросы по тегам