Вопрос
Как VB.NET рассчитывает длину метода?Как я могу сделать это на С#?
Это мой ВБ.НЕТ код:
Private Function ZeroPad(ByRef pNumber As Integer, ByRef pLength As Integer) As String
Dim Padding As Object
If IsNumeric(pNumber) And IsNumeric(pLength) Then
Padding = New String("0", pLength)
ZeroPad = Padding & CStr(pNumber)
ZeroPad = Right(ZeroPad, pLength)
Else
ZeroPad = CStr(pNumber)
End If
End Function
Я преобразовал в C# следующим образом:
private string ZeroPad(ref int pNumber, ref int pLength) {
object Padding;
if ((IsNumeric(pNumber) && IsNumeric(pLength))) {
Padding = new string("0", pLength);
return (Padding + pNumber.ToString());
ZeroPad = ZeroPad.Substring((ZeroPad.Length - pLength));
// In the above line, how can I take the length of a method in C#?
}
else {
return pNumber.ToString();
}
}
Решение
Вы, вероятно, путаете переменную ZeroPad
и метод ZeroPad
.Имена переменных принято писать с начальной буквы в нижнем регистре, например. zeroPad
.Чтобы вернуть значение из метода, используйте return
в С#.Я не уверен, какова цель вашего IsNumeric
подпрограмму или почему вы берете значение по ссылке, но ваш код на C# будет похож на:
private string ZeroPad(ref int pNumber, ref int pLength)
{
string padding;
string zeroPad;
if ((IsNumeric(pNumber) && IsNumeric(pLength)))
{
padding = new string('0', pLength);
zeroPad = (padding + pNumber.ToString());
zeroPad = zeroPad.Substring((zeroPad.Length - pLength));
}
else
{
zeroPad = pNumber.ToString();
}
return zeroPad;
}
Поскольку вы не меняете значения pNumber
или pLength
, вы можете передать их по значению (ByVal
в Visual Basic).И зная, что оба pNumber
и pLength
являются целыми числами и, следовательно, всегда числовыми, ваш метод можно сократить до следующего:
private string ZeroPad(int pNumber, int pLength)
{
string zeroPad;
string padding = new string('0', pLength);
zeroPad = (padding + pNumber.ToString());
zeroPad = zeroPad.Substring(zeroPad.Length - pLength);
return zeroPad;
}
Библиотеки базовых классов .NET Framework имеют String.PadRight метод, который делает именно то, что вы хотите, если вы укажете '0'
как значение для paddingChar
.
Другие советы
в C #, вы не назначаете имя метода.Вместо этого вы используете оператор «Return».Объявите переменную:
string retVal;
.
и вместо
ZeroPad = some_value;
.
Использование:
retVal = some_value;
.
и на последнем возвращении retval:
return retVal;
.