Струнная печать несколько раз, кроме последнего раза?
Вот мой код
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)
Делегату нет необходимости просто выполнять метод.