0

我是 C# 的新手,我也想让我以前的 VB 程序在 C# 中运行。我对 VB 的 byRef 有一点问题,我无法将它翻译成 C#。

所以这是我在VB中的代码:

Sub LepesEllenorzes(ByRef Gomb1 As Button, ByRef Gomb2 As Button)
    If Gomb2.Text = " " Then 'if a button is empty
        Gomb2.Text = Gomb1.Text 'change the numbers on them
        Gomb1.Text = " "
    End If
End Sub

这是我在 C# 中的代码,但不能正常工作:

public Lépés(ref Button but1, ref Button but2)
{
       if (but2.Text == "")
       {
                but2.Text = but1.Text;
                but1.Text = "";
       }                
}

该代码来自数字洗牌游戏,检查两个相邻按钮中的一个是否为空,因此带有数字的按钮将用空按钮更改位置。

对不起我的英语,我希望你能理解我的问题。

4

2 回答 2

1

除非这是一个构造函数(我非常怀疑),否则你需要一个返回类型。如果没有返回任何内容,则void有效:

public void Lépés(ref Button but1, ref Button but2)
{
        if (but2.Text == "")
        {
            but2.Text = but1.Text;
            but1.Text = "";
        }                
}

其次,这里不需要ref

public void Lépés(Button but1, Button but2)
{
        if (but2.Text == "")
        {
            but2.Text = but1.Text;
            but1.Text = "";
        }                
}

默认情况下,这些是引用类型,除非您有非常具体的理由使用它们,否则您不应该默认使用ref参数。

于 2013-10-06T11:33:29.427 回答
0

VB 正在使用空格,而 C# 是一个空字符串。是这样吗?

于 2013-10-06T11:34:17.440 回答