52 - Considera a seguinte classe:
public class AnnotatedDouble
{
public double DoubleValue { get; set; }
public string Annotation { get; set; }
public override string ToString() => $"{DoubleValue:f2} ({Annotation})";
}
Responde às seguintes questões:
- Adiciona uma conversão definida pelo utilizador para converter
AnnotatedDouble
emdouble
(usando o valor da propriedadeDoubleValue
). - Adiciona uma conversão definida pelo utilizador para converter
AnnotatedDouble
emstring
(usando o valor da propriedadeAnnotation
). - Adiciona uma conversão definida pelo utilizador para converter
double
emAnnotatedDouble
, na qual a propriedadeDoubleValue
toma o valor dodouble
e a propriedadeAnnotation
é inicializada com uma string vazia""
. - Adiciona uma conversão definida pelo utilizador para converter uma string
em
AnnotatedDouble
, na qual o campoAnnotation
toma o valor dessa string, e o campodouble
é inicializado a zero. - Apresenta algumas linhas de código que exemplifiquem as conversões definidas nas alíneas anteriores.
AnnotatedDouble.cs
// Somewhere in AnnotatedDouble.cs...
public static explicit operator double(AnnotatedDouble ad)
=> ad.DoubleValue;
AnnotatedDouble.cs
// Somewhere in AnnotatedDouble.cs...
public static explicit operator string(AnnotatedDouble ad)
=> ad.Annotation;
AnnotatedDouble.cs
// Somewhere in AnnotatedDouble.cs...
public static implicit operator AnnotatedDouble(double number)
=> new AnnotatedDouble() { DoubleValue = number, Annotation = ""};
AnnotatedDouble.cs
// Somewhere in AnnotatedDouble.cs...
public static implicit operator AnnotatedDouble(string input)
=> new AnnotatedDouble() { DoubleValue = 0, Annotation = input};
Program.cs
class Program
{
static void Main(string[] args)
{
// Create our instance of AnnotatedDouble and print it.
AnnotatedDouble ad = new AnnotatedDouble()
{
DoubleValue = 10,
Annotation = "Highest!"
};
Console.WriteLine(ad);
// 1.
double adToDouble = (double)ad;
Console.WriteLine(adToDouble);
// 2.
string adToString = (string)ad;
Console.WriteLine(adToString);
// 3.
AnnotatedDouble anotherAn = 10;
Console.WriteLine(anotherAn);
// 4.
AnnotatedDouble yetAnotherAn = "Lowest!";
Console.WriteLine(yetAnotherAn);
}
}
Por Inácio Amerio.