Skip to content

Latest commit

 

History

History
113 lines (84 loc) · 2.63 KB

052.md

File metadata and controls

113 lines (84 loc) · 2.63 KB

Problema

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:

  1. Adiciona uma conversão definida pelo utilizador para converter AnnotatedDouble em double (usando o valor da propriedade DoubleValue).
  2. Adiciona uma conversão definida pelo utilizador para converter AnnotatedDouble em string (usando o valor da propriedade Annotation).
  3. Adiciona uma conversão definida pelo utilizador para converter double em AnnotatedDouble, na qual a propriedade DoubleValue toma o valor do double e a propriedade Annotation é inicializada com uma string vazia "".
  4. Adiciona uma conversão definida pelo utilizador para converter uma string em AnnotatedDouble, na qual o campo Annotation toma o valor dessa string, e o campo double é inicializado a zero.
  5. Apresenta algumas linhas de código que exemplifiquem as conversões definidas nas alíneas anteriores.

Soluções

Solução 1

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.