2013-10-06 3 views
0

Я новичок в C#, и я бы хотел, чтобы моя прежняя программа VB работала и на C#. У меня возникла небольшая проблема с VB byRef, я не могу перевести его на C#.Преобразование кода VB в 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 = ""; 
     }     
} 

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

Извините за мой английский, надеюсь, вы поймете мою проблему.

+2

Определите, что «не работает должным образом». Какой у вас показатель, что он работает не так, как ожидалось? – David

+4

Вы не должны использовать 'ref' /' ByRef' вообще. – SLaks

ответ

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.

+0

Отлично! Спасибо, теперь он работает правильно! – Dunowen

0

VB использует пробел, а C# - пустая строка. Это оно?

+0

Нет, это просто потому, что VB-код требует больше места./Ю.К. –

Смежные вопросы