value en get o set

18/01/2006 - 12:53 por marcwentink | Informe spam
Cuando en los libros que tengo de C# y los ejemplos que veo, lo hacen
un get or set funccion se usa value como:

public DateTime dtDate
{
get
{
return Convert.ToDateTime(txtBirth.Text);
}
set
{
txtBirth.Text = value.ToString();
}
}

Mi pregunta es porque no usar dtDate, que tambien es acceptado por el
compiler:

public DateTime dtDate
{
get
{
return Convert.ToDateTime(txtBirth.Text);
}
set
{
txtBirth.Text = dtDate.ToString();
}
}


Es lo mismo, o no?

Preguntas similare

Leer las respuestas

#1 José Escrich
18/01/2006 - 13:04 | Informe spam
no porque utilizando dtDate estas entrando por el getter y no por el value
especificado en el setter.
fijate haz la prueba, pero no utilices un textbox.. eso te esta confundiendo.
mira y/o proba este ejemplo

public class SampleClass
{
private string name = "valor inicial de name";

public string Name
{
get { return name; }
set { name = value; }
}

private string description = "valor inicial de descripcion";

public string Description
{
get { return description; }
set { description = Description; }
}

}
class Program
{
static void Main(string[] args)
{
SampleClass sample = new SampleClass();
Console.WriteLine(sample.Name);
Console.WriteLine(sample.Description);
sample.Name = "NameVALOR2";
sample.Description = "DescriptionVALOR2";
Console.WriteLine(sample.Name);
Console.WriteLine(sample.Description);

Console.ReadLine();
}
}

OUTPUT:
valor inicial de name
valor inicial de descripcion
NameVALOR2
valor inicial de descripcion

saludos, espero que te haya aclarado.

José Escrich
jescrich (a) gmail.com
Check my page: http://latincoder.com @ .net Knowledge Resource Center

Mostrar la cita
#2 marcwentink
18/01/2006 - 16:29 | Informe spam
Jose'

Mostrar la cita
Si, claro, muchas grarcias :-)
#3 Jose Luis Manners
18/01/2006 - 17:20 | Informe spam
NO, no es lo mismo. Como te dijo José Escrich estas entrando por el get. Si
defines get/sets para exponer una variable interna de un objeto al mundo
exterior entonces corres el riesgo de que la variable privada nunca reciba
su valor por medio del set. Mira este ejemplo:

private string myVar;

public string LaPropiedad
{
get
{
return myVar;
}
set
{
myVar= LaPropiedad;
}
}

Luego si haces esto:

unaInstanciaCualquiera.LaPropiedad = DateTime.Now.ToString();

el valor de la variable interna myVar es todavia nulo, lo cual no era la
intención. Y si luego haces un get recibes nulo cuando en realidad crees
que deberia darte la fecha de hoy. Te recomiendo seguir usando "value" en
los sets.

Coopera con el foro. Dinos si te sirvió la respuesta aquí planteada.

Saludos,

Jose Luis Manners, MCP
http://www.josemanners.com/

"Vale más saber alguna cosa de todo, que saberlo todo de una sola cosa."
-Blaise Pascal

wrote in message
news:
Mostrar la cita
#4 marcwentink
19/01/2006 - 12:54 | Informe spam
Jose :

Mostrar la cita
En realidad hago:

unaInstanciaCualquiera.LaPropiedad unaInstanciaCualquiera.LaPropiedad;

verdad?
#5 Jose Luis Manners
20/01/2006 - 00:32 | Informe spam
Marc,

Esa asignación siempre te dará el valor que tenga la variable (o valor) que
devuelvas en el get. Ya sea null o el valor que tenga previamente. Tu
código nunca cambia el valor porque la propiedad se está llamando a si
misma, lo cual es un poco redundante en mi opinión. La forma correcta (por
lo menos según mi criterio) es siempre recibir "value" en el "setter" y
asignarle a la propiedad un valor diferente a la propiedad misma. No
tendría sentido que algo se asigne a si mismo.

No sé si me supe explicar, pero ahi me dejas saber si te pude aclarar la
duda.

Coopera con el foro. Dinos si te sirvió la respuesta aquí planteada.

Saludos,

Jose Luis Manners, MCP
http://www.josemanners.com/

"Vale más saber alguna cosa de todo, que saberlo todo de una sola cosa."
-Blaise Pascal

wrote in message
news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida