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

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?

Respuesta Responder a este mensaje
#2 marcwentink
18/01/2006 - 16:29 | Informe spam
Jose'

no porque utilizando dtDate estas entrando por el getter y no por el value
espero que te haya aclarado.



Si, claro, muchas grarcias :-)
Respuesta Responder a este mensaje
#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:
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?

Respuesta Responder a este mensaje
#4 marcwentink
19/01/2006 - 12:54 | Informe spam
Jose :

Luego si haces esto:

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



En realidad hago:

unaInstanciaCualquiera.LaPropiedad unaInstanciaCualquiera.LaPropiedad;

verdad?
Respuesta Responder a este mensaje
#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:
Jose :

> Luego si haces esto:

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

En realidad hago:

unaInstanciaCualquiera.LaPropiedad > unaInstanciaCualquiera.LaPropiedad;

verdad?

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida