C sharp - Duda de principiante

 
Vista:

Duda de principiante

Publicado por Juan (3 intervenciones) el 19/05/2007 23:32:56
Buenas a todos:

Estoy empezando en esto de C#, he escrito el siguiente código que si bien no tiene mucho sentido su único objetivo es el de entender los conceptos (que creo que no acabo de coger).

using System;

class Empleados
{
public string Nombre;
public string Apellido;

public static void Main()
{
Empleados p = new Empleados();
p.Nombre = "Alberto";
p.Apellido = "Alvarez";
Empleados A = new Empleados();
A.SalidaConsola();
}

public void SalidaConsola()
{
Console.WriteLine("{0} {1}",p.Nombre, p.Apellido);
Console.ReadLine();
}
}

Lo que pretendo es establecer un método que asigne valores a los campos y otro que saque por la consola esos valores. El problema es que en el método SalidaConsola me dice que "El nombre 'p' no existe en el contexto actual". ¿Alguien me puede decir dónde estoy metiendo la pata? A lo mejor estoy preguntando una burrada, agradezco vuestra paciencia y ayuda.

Muchas Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Duda de principiante

Publicado por Otro que empieza (1 intervención) el 25/05/2007 09:52:03
using System;

/* Espero que te sirva de alguna ayuda, yo también estoy empezando con esto
NOTA: No he compilado ni he ejetutado el programa, por lo que no se si
* funcionará, solo espero que te ayude a distinguir la diferencia entre la
* clase y cada obtejo

*/

// Tu decias lo siguiente...
class Empleados
{
public string Nombre;
public string Apellido;

public static void Main()
{
// Aqui estas diciendo: "Creo un empleado, al que llamaremos p, cuyo
// nombre y apellido son Alberto Alvarez...
Empleados p = new Empleados();
p.Nombre = "Alberto";
p.Apellido = "Alvarez";

// Y Aqui creas otro empleado que no sabemos como se llama
Empleados A = new Empleados();

// Y el error es que aqui dices: Saca por pantalla como se llama el
// EMPLEADO A (NO ES EL EMPLEADO p!)
// Entonces el OBJETO va a su definicion del metodo y dice...
/// oye saca los datos por pantalla de un empleado llamado p
/// y como A no tiene ni idea de quien es p (son objetos distintos)
/// pues te muestra ese error
A.SalidaConsola();
}

public void SalidaConsola()
{
// Cada empleado (p, A, etc) llama a su método y claro, no tiene ni idea
// de quien es p (Ni siquiera p sabe quien es ese 'p' al que tiene que llamar)
Console.WriteLine("{0} {1}", p.Nombre, p.Apellido);
// Esto si Console.WriteLine("{0} {1}", Nombre, Apellido);
Console.ReadLine();
}
}


//
// Espero que te quede más claro de esta forma
//
// primero creo una clase que contiene los datos y la lógica para un empleado
class UnEmpleadoCualquiera
{
// Es buena técnica programar atributos como privado y declarar get&set
// pero en este ejemplo nos lo saltamos...

string _Nombre; // Nombre y Apellido de UN empleado
string _Apellido;

// Cuando creamos una instancia, estamos 'creando'
// un empleado concreto...
public UnEmpleadoCualquiera(string nombre, string apellido)
{
_Nombre = nombre;
_Apellido = apellido;
}

// Muestra por pantalla el contenido de los campos Nombre y Apellido
// del OBJETO que ha llamado este metodo
public void SalidaConsola()
{
// Fijate como no indicamos de que empleado se trata!!
// Solo digo 'Saca por pantalla MI nombre' sea el que sea
Console.WriteLine("{0} {1}", _Nombre, _Apellido);
Console.ReadLine();
}
}

// Ahora creamos una clase que contiene el programa ppal
class Principal
{
public static void Main()
{
// De todos los empleados del Mundo, acabamos de indicar que
// hay uno que se llama Alberto Alvarez
UnEmpleadoCualquiera p = new Empleados("Alberto", "Alvarez");

// Ahora Lo que hacias era crear otro empleado que no tenía nombre
// ni apellido (con el valor de string por defecto)
UnEmpleadoCualquiera A = new Empleados();

// Ahora queremos saber como se llama cada uno
p.SalidaConsola(); // Este es Alberto Alvarez
A.SalidaConsola(); // Este es uno de incognito

// Y sin embargo ninguno de los dos conoce la existencia del otro...
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar