Вопрос

Как 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;
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top