Comprimento de um método em VB.NET
-
11-12-2019 - |
Pergunta
Como o VB.NET calcula o comprimento de um método?Como posso fazer isso em C#?
Este meu VB.NET código:
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
Converti para C# da seguinte maneira:
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();
}
}
Solução
Você provavelmente está confuso entre a variável ZeroPad
e o método ZeroPad
.É comum escrever nomes de variáveis com um caractere inicial minúsculo, por ex. zeroPad
.Para retornar um valor de um método, use return
em C#.Não tenho certeza de qual é o propósito do seu IsNumeric
sub-rotina ou por que você toma valor por referência, mas seu código em C# seria semelhante a:
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;
}
Como você não altera os valores de pNumber
ou pLength
, você pode passá-los por valor (ByVal
em Visual Basic).E sabendo que ambos pNumber
e pLength
são inteiros e, portanto, sempre numéricos, seu método pode ser abreviado para o seguinte:
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;
}
As bibliotecas de classes base do .NET Framework têm um String.PadRight método que faz exatamente o que você deseja se você especificar '0'
como o valor para paddingChar
.
Outras dicas
Em C#, você não atribui ao nome do método.Em vez disso, você usa uma instrução "return".Declare uma variável:
string retVal;
E em vez de
ZeroPad = some_value;
usar:
retVal = some_value;
e finalmente retorne retVal:
return retVal;