C#における直接マッピングと暗黙的・明示的な演算子の使用方法


  1. 直接マッピング: 直接マッピングは、1つの型から別の型への変換を行う際に使用されます。通常、同じデータ構造を持つ2つの型間の変換に使用されます。例えば、以下のようなクラスがあるとします。
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

このクラスを別のクラスに変換する場合、直接マッピングを使用することができます。

public class PersonDTO
{
    public string Name { get; set; }
    public int Age { get; set; }
    public static explicit operator PersonDTO(Person person)
    {
        return new PersonDTO
        {
            Name = person.Name,
            Age = person.Age
        };
    }
}

上記の例では、PersonDTOクラスにPersonクラスを変換するための明示的な演算子を定義しています。

  1. 暗黙的演算子: 暗黙的演算子は、型変換を行う際に明示的なキャストを必要とせずに、自動的に実行される演算子です。以下は、暗黙的演算子の使用例です。
public class Temperature
{
    public double Celsius { get; set; }
    public static implicit operator Temperature(double celsius)
    {
        return new Temperature { Celsius = celsius };
    }
    public static implicit operator double(Temperature temperature)
    {
        return temperature.Celsius;
    }
}

上記の例では、Temperatureクラスに対して、double型との間での暗黙的な変換が可能となります。これにより、以下のようなコードが実行できます。

Temperature temperature = 25.5;
double celsius = temperature;
  1. 明示的演算子: 明示的演算子は、明示的なキャストを必要とする型変換を定義するために使用されます。以下は、明示的演算子の使用例です。
public class Distance
{
    public double Meters { get; set; }
    public static explicit operator Distance(double meters)
    {
        return new Distance { Meters = meters };
    }
    public static explicit operator double(Distance distance)
    {
        return distance.Meters;
    }
}

上記の例では、Distanceクラスに対して、double型との間での明示的な変換が可能となります。以下のように、明示的なキャストを使用して変換を行います。

Distance distance = (Distance)10.5;
double meters = (double)distance;

以上が、C#における直接マッピングと暗黙的・明示的な演算子の使用方法です。これらの概念を適切に活用することで、柔軟な型変換やオブジェクト間の相互作用を実現することができます。