Archivo por días: 12 diciembre, 2020

Simular discard de C# en Visual Basic

Pues eso… haciendo pruebas con el conversor de C# a VB de Paul1956 comprobé que los discard de C# (asignación digamos que nula de una función o descartes según la traducción al español ) los generaba usando dos guiones bajo (undercore) y el «asistente» de VS indicó que creara una función para usar ese descarte. Y al ver que es válido usar el nombre __ (dos guiones bajos) como nombre de una función, pensé que también sería válido para una propiedad… de forma que se pudiese haccer ese tipo de asignación.

Por ejemplo, si tenemos este código de C# en el que se «descarta» el valor devuelto por la función MostrarAyuda:

class Program
{
    static void Main(string[] args)
    {
        _ = MostrarAyuda(true, false);

        //Console.WriteLine(_);

        Console.WriteLine();
        Console.WriteLine("Pulsa una tecla para finalizar.");
        Console.ReadKey();
    }

    private static string MostrarAyuda(bool value1, bool value2)
    {
        var s = $"Valores: value1: {value1}, value2: {value2}";
        Console.WriteLine(s);
        return s;
    }
}

La conversión podría quedar de esta forma:

Public Shared Sub Main(args As String())
    '__ = MostrarAyuda(True, False)

    __ = MostrarAyuda(True, False)

    Console.WriteLine(__)

    Console.WriteLine()
    Console.WriteLine("Pulsa una tecla para finalizar.")
    Console.ReadKey()
End Sub

Private Shared Property __ As Object

Private Shared Function MostrarAyuda(value1 As Boolean, value2 As Boolean) As String
    Dim s = $"Valores: value1: {value1}, value2: {value2}"
    Console.WriteLine(s)
    Return s
End Function

Es un apaño, pero puede valer para equiparar los dos lenguajes.

Nota:
Fíjate que en VB al ser una propiedad válida la podemos usar como cualquier otra variable para mostrar el contenido.

Y esto es todo… a ver si lo implementa y así no dará error cuando se convierta código de C# que tenga ese tipo de asignación (que la implementaron en C# 7.0)

Nos vemos.
Guillermo