Beispiel #1
0
        /// <summary>
        /// Un tipo que se define como clase, delegado, matriz o interfaz es un tipo de referencia.
        /// para más detalles ver: https://docs.microsoft.com/es-es/dotnet/csharp/programming-guide/types/#reference-types
        /// </summary>
        public static void DeReferencia()
        {
            // Al declarar una variable de un tipo de referencia en tiempo de ejecución, esta contendrá el valor null hasta que se cree explícitamente un objeto mediante el operador new, o bien que se le asigne un objeto creado en otro lugar mediante new, tal y como se muestra en el ejemplo siguiente:
            Console.WriteLine($"-----{nameof(DeReferencia)}-----");
            Console.WriteLine();

            // Si bien los string son tipos por referencia
            Console.WriteLine("declare una variable de tipo string llamada 'miString'");
            string miString = "test";

            Console.WriteLine($"el valor de la variable 'miString' es: {miString}");

            // cuando se pasan por parámetro a una función son <inmutables>
            // esto quiere decir que no cambia el estado del objeto aunque se editen valores dentro de la función a la que se llama.
            Console.WriteLine("Ejecuto un método donde internamente modifico 'miString'.");
            Modificar(miString);

            Console.WriteLine($"el valor de la variable 'miString' es: {miString}");

            //  o las estructuras
            Console.WriteLine($"declare una variable de tipo {nameof(ClasePersona)} llamada 'persona'");
            ClasePersona persona = new ClasePersona
            {
                // esta es una forma de hacer la construcción del objeto simplificada asignando valores a las propiedades públicas que éste tenga
                Nombre   = "mi nombre",
                Apellido = "mi apellido"
            };

            Console.WriteLine($"mi estructura persona tiene Nombre: '{persona.Nombre}' y apellido: {persona.Apellido}.");

            // Cuando se envía como parámetro un tipo por valor éste no se ve afectado por las acciones que se realizan dentro de la función
            // ya que internamente lo que sucede es que se crea una copia de la variable con el scope local de la función que se ejecuta.
            Console.WriteLine("Ejecuto un método donde internamente modifico persona.");
            Modificar(persona);

            Console.WriteLine($"mi estructura persona tiene Nombre: '{persona.Nombre}' y apellido: {persona.Apellido}.");
        }
Beispiel #2
0
 private static void Modificar(ClasePersona persona)
 {
     persona.Nombre   = "otro nombre";
     persona.Apellido = "otro apellido";
 }