囚犯';VB.NET中的s困境-与“有关的编译错误”;否则,如果;

囚犯';VB.NET中的s困境-与“有关的编译错误”;否则,如果;,vb.net,if-statement,vb.net-2010,Vb.net,If Statement,Vb.net 2010,我正试图在VB.NET中为一个学校项目构建一个囚徒困境游戏,我发现这个奇怪的行为我不理解 我有两个播放器按钮,“合作”和“缺陷”,都有相同的代码结构: Private Sub btnDefect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDefect.Click Oponent() MovePlayer = "Defect" If MoveOponent =

我正试图在VB.NET中为一个学校项目构建一个囚徒困境游戏,我发现这个奇怪的行为我不理解

我有两个播放器按钮,“合作”和“缺陷”,都有相同的代码结构:

Private Sub btnDefect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDefect.Click
    Oponent()
    MovePlayer = "Defect"

    If MoveOponent = "Coop" Then
        scorePlayer += 50
        scoreOponent -= 50
    Else
        If MoveOponent = "Defect" Then
            scorePlayer -= 10
            scoreOponent -= 10
        End If
    End If


    scores()

End Sub
我知道ELSE-IF是不必要的,但我这样写是为了更清楚、更可读。问题是,如果两个按钮都有其他按钮-如果我出现编译错误并且无法从Visual Studio运行游戏(尽管bin文件夹中的.exe工作正常)。现在,如果我从中删除ELSE-if按钮,只留下一个常规的ELSE,它就可以完美地工作。但如果我从两者中删除它,则会发生相同的错误

我得到的错误是:

无法复制文件“obj\x86\Debug\PrisonersDilemma.exe”,因为 没有找到。PrisonersDilemma

但是我找了那个.exe文件,它就在那里

知道为什么会这样吗?我可以通过只留下一个来让它工作——如果可以的话,但我想知道到底出了什么问题

以下是完整的代码供参考:

Public Class Form1
    Dim MovePlayer As String
    Dim MoveOponent As String
    Dim scorePlayer As Integer
    Dim scoreOponent As Integer

    Sub scores()
        lblscoreOponent.Text = scoreOponent
        lblscorePlayer.Text = scorePlayer
    End Sub
    Sub Oponent()
        If MovePlayer = "" Then
            MoveOponent = "Coop"
        Else
            MoveOponent = MovePlayer
        End If

        lblMoveOponent.Text = MoveOponent
        lblMoveOponent.Visible = True
    End Sub

    Private Sub btnCoop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCoop.Click
        Oponent()
        MovePlayer = "Coop"

        If MoveOponent = "Coop" Then
            scorePlayer += 10
            scoreOponent += 10
        Else
            scorePlayer += 50
            scoreOponent -= 50
        End If

        scores()

    End Sub

    Private Sub btnDefect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDefect.Click
        Oponent()
        MovePlayer = "Defect"

        If MoveOponent = "Coop" Then
            scorePlayer += 50
            scoreOponent -= 50
        Else
            If MoveOponent = "Defect" Then
                scorePlayer -= 10
                scoreOponent -= 10
            End If
        End If


        scores()

    End Sub
End Class

谢谢

1:编译时,如果出现错误,将不会替换bin文件夹中的EXE。您的EXE是最后一个成功的生成,这就是为什么您会遇到这样的问题:“生成过程中出现错误,是否要运行最后一个成功的生成?”如果您说是,这将运行该EXE

2:似乎我在2012年偶尔看到“找不到”错误,我认为这是Visual Studio的问题。通常我再试一次就可以了。如果您正在从bin文件夹运行EXE,请确保在编译之前它没有运行。它将阻止复制它的能力


3:如果你想知道为什么会出现comiplation错误,你必须显示代码,而不是有效的代码

该错误消息与您的代码关系不大。您需要禁用病毒扫描程序或进行排除。如果是Avast,则完全卸载它。