C# Dilinde Tip Dönüşümleri

Photo by Suzanne D. Williams on Unsplash

Implicit Dönüşümler

C# dilinde X tipindeki bir objeyi Y tipindeki ait bir objeye atamak istersek kodumuz derlenmeyecektir. Bu bilgiye karşın o halde nasıl oluyor da aşağıdaki int tipindeki objeyi long tipindeki bir objeye atayabiliyoruz?

int integerValue = 42;
long longValue = integerValue;

Explicit Dönüşümler

long tipinden olan bir objeyi int olarak tanımladığımız bir objeye atayabilir miyiz? Bunun cevabı ise hem evet hem hayırdır. Aşağıdaki kod bloğuna bakarsak önceki örnekte olduğu gibi doğrudan bir atama yapamadığımızı görebiliriz.

long longValue = 42;
int intValue = (int) longValue;

Kullanım Senaryosu

DDD konseptine bağlı kalarak geliştirmeye çaba harcadığım bir projede UserId , ProjectId , UserPassword gibi birçok değer objesi yer almaktaydı. Bunların büyük bir kısmı Guid , string gibi değerler taşıyan yapılardı. Bu değer objelerini oluştururken aşağıdaki örnekteki gibi öncelikle Guid tipinden bir obje oluşturmaktaydım. Ardından değeri constructor metoduma vererek UserId tipinden bir obje üretmekteydim.

Bonus

Bilinçsiz tür dönüşümü yaptığımız senaryolarda metotların aşırı yükleme (method overload) işlemine benzer bir işlemi de yapmış oluyoruz. Örneklemek gerekirse UserId tipinden bir obje alıp işleyen bir metoda sahip olduğumuzu düşünelim. Bu metoda Guid tipinden bir obje ile de çağrı yapabiliriz. Bunun sebebi C# dilinin Guid objesini otomatik olarak UserId tipine çevirerek metodu harekete geçirebilme kabiliyetidir.

--

--

var software = ConvertFrom(caffeine)

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Adem Catamak

Adem Catamak

var software = ConvertFrom(caffeine)