Forums Últimos mensajes - Powered by IBM
 

Clase genérica con tipos nullables

01/01/2008 - 01:24 por Clara | Informe spam
Hola,

No es posible definir una clase que genèrica que acepte tipos nullables?

algo asi:

class P <T>
{
private T _i1;
private T _i2;

public P (T i1, T i2) {_i1 = i1; _i2 = i2;}

public bool Error {
get {
if (_i1.HasValue && _i2.HasValue) //Esto no compila.
{

}
}

Tengo una clase con dos campos privados del tipo decimal?, (en el ejemplo T
seria decimal?). Y esta misma clase la queria hacer genérica, puesto que la
tengo que repetir con valores tipos DateTime?, Int?, ... pero por lo que
veo, no se puede.
O si?

Grácias.
 

Leer las respuestas

#1 Octavio Hernandez
01/01/2008 - 12:08 | Informe spam
Hola!

No, el tipo genérico no puede ser anulable.
Puedes hacer lo que quieres haciendo que el tipo genérico sea la versión
"no anulable" del que pensabas, y gestionar la "nulidad" dentro de la propia
clase:

class P<T> where T: struct
{
private T? _i1;
private T? _i2;

public P(T? i1, T? i2) { _i1 = i1; _i2 = i2; }

public bool Error
{
get
{
return _i1 == null || _i2 == null;
}
}

public static bool Test1()
{
P<int> parDeEnteros = new P<int>(3, null);
return !parDeEnteros.Error;
}
}


Slds - Octavio


"Clara" wrote in message
news:%
Hola,

No es posible definir una clase que genèrica que acepte tipos nullables?

algo asi:

class P <T>
{
private T _i1;
private T _i2;

public P (T i1, T i2) {_i1 = i1; _i2 = i2;}

public bool Error {
get {
if (_i1.HasValue && _i2.HasValue) //Esto no compila.
{

}
}

Tengo una clase con dos campos privados del tipo decimal?, (en el ejemplo
T
seria decimal?). Y esta misma clase la queria hacer genérica, puesto que
la
tengo que repetir con valores tipos DateTime?, Int?, ... pero por lo que
veo, no se puede.
O si?

Grácias.


Preguntas similares