tss tss tss Parfois je me demande à quoi pense Microsoft quand même
Parfois on a besoin qu'une variable n'ai pas de valeur reste vide,
comme souvent c'est le cas pour une application accèdant à une base de données dès l'instant ou certains champs d'une table doivent pouvoir accepter les valeurs nulles
Certes Microsoft a sorti les nullables en .NET 2.0
mais pour .NET 1.0 cela peut se révéler de la vraie bidouille j'ai essayeéde développer ces deux structures pour int et DateTime (basées sur ce que j'ai vu dans un webcast de mitsuru Furuta et sur l'implémentation dans le framework .NET 2.0 des Nullables<>)
mais j'avoue quand même que parfois je me demande à quoi pense Microsoft, car certes Linq ,WPF,etc. sont trés stimulants mais je suis étonné parfois comme de simples petits problêmes n'ont en fait pas de solutions, ou comment on peut peiner pour résoudre des actions de bases ...
|
///<summary>
///
///</summary>
public struct intNullable
{
private int _Value;
private bool _HasValue;
public intNullable(int value)
{
this._Value = value;
this._HasValue = true;
}
public int Value
{
get { return _Value;
}
set { _Value = value;
}
}
public bool HasValue
{
get { return _HasValue;
}
}
public static implicit operator int(intNullable i)
{
return i.Value;
}
public static implicit operator intNullable(int i)
{
return new intNullable(i);
}
public void ClearValue()
{
this._Value =0;
this._HasValue = false;
}
public override string ToString()
{
if (this.HasValue==false)
{
return string.Empty;
}
return this.Value.ToString();
}
}
///<summary>
///
///</summary>
public struct DateTimeNullable
{
private DateTime _Value;
private bool _HasValue;
public DateTimeNullable(DateTime
value)
{
this._Value = value;
this._HasValue = true;
}
public DateTime Value
{
get { return _Value;
}
set { _Value = value;
}
}
public bool HasValue
{
get { return _HasValue;
}
}
public static implicit operator DateTime(DateTimeNullable d)
{
return d.Value;
}
public static implicit operator DateTimeNullable(DateTime d)
{
return new DateTimeNullable(d);
}
public void ClearValue()
{
this._Value = new
DateTime();
this._HasValue = false;
}
public override string ToString()
{
if (this.HasValue ==
false)
{
return string.Empty;
}
return this.Value.ToString();
}
}
|
Pour l'accés aux données (ADO.NET) ,il est également possible tout simplement d'utiliser un object pour les champs pouvant être null
ainsi on pourra affecter
mais cela reste du bidouillage je trouve et aucune de ses solutions ne me satisfait
