Paso por valor y paso por referencia

Programación Orientada a Objetos (Tower defense - kingdom rush)

Moderator: julianmartinez16

Post Reply
User avatar
xacarana
Site Admin
Posts: 1165
Joined: Fri Jan 15, 2016 6:13 pm

Paso por valor y paso por referencia

Post by xacarana » Wed Oct 05, 2016 9:38 am

Code: Select all

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication4
{
    class Program
    {
        public static void ElevarAlCuadrado(int[]x)
        {
            for (int i = 0; i < x.Length; i++)
            {
                x[i] = x[i] * x[i];
            }
        }

        public static void LeerArray(out int[]x)
        {
            int n, cont = 0;
            string temp;

            Console.WriteLine("Ingrese la longitud del array");
            temp = Console.ReadLine();

            if(int.TryParse(temp,out n))
            {
                x = new int[n];

                while(cont < n)
                {
                    Console.WriteLine("Ingrese x["+cont+"] del array");
                    temp = Console.ReadLine();
                    if (int.TryParse(temp, out x[cont]))
                    {
                        cont++;
                    }
                    else
                    {
                        Console.WriteLine("Dato incorrecto");
                    }          
                }
            }
            else
            {
                Console.WriteLine("Error al inicializar el array");
                x = null;
            }
        }

        public static void ImprimirArray(int[] x)
        {
            if(x != null)
            {
                Console.Write("[");
                for (int i = 0; i < x.Length; i++)
                {
                    Console.Write(x[i]);
                    if (i + 1 < x.Length)
                    {
                        Console.Write(",");
                    }
                }
                Console.Write("]");
            }
            
        }
        public static int Sumar(int x, int y)
        {
            x = 6; y = 7;
            return x + y;
        }

        public static int SumarReferencia(out int a, out int b)
        {
            a = 43; b = 3;
            return a + b;
        }

        static void Main(string[] args)
        {
            int x = 2, y = 1;
            int[] z = { 2, 5, 6, 7, 8, 9, 12, 67 };
            int[] w;

            Console.WriteLine("Paso por copia dato primitivo");
            Console.WriteLine(Sumar(2,1));
            Console.WriteLine(Sumar(x, y));//Se pasan como copias
            Console.WriteLine(x + " " + y);

            Console.WriteLine("Paso por referencia dato primitivo");
            //Console.WriteLine(SumarReferencia(2, 1)); No funciona con costantes
            Console.WriteLine(SumarReferencia(out x, out y));//Se pasan como referencias
            Console.WriteLine(x + " " + y);

            Console.WriteLine("Array original");
            ImprimirArray(z);
            ElevarAlCuadrado(z);
            Console.WriteLine("");
            Console.WriteLine("Array al cuadrado");
            ImprimirArray(z);

            Console.WriteLine("");
            Console.WriteLine("Array Leído");
            LeerArray(out w);
            ImprimirArray(w);

            Console.ReadKey();
        }
    }
}

Andrés Bedoya Tobón
Profesor
"I only smile in the dark, I only smile when it's complicated" Raybiez

Post Reply