
C# Programlama – Değişkenler ve Veri Türleri
Ocak 2, 2022
C# Programlama – Ternary ve Coalescing Operatörü
Ocak 2, 2022C# Programlama - Tip Dönüşümleri
C#'ta farklı türde olan değişkenleri aynı ifade içinde işlem görmesi için tür dönüşümleri kullanılır. C#'ta parse() metodu metinsel veriyi sayısal veri tipine dönüştürür. Bu şekilde örneğin kullanıcının metinsel olarak klavyeden girdiği bir veriyi sayısal ifadeye dönüştürerek yazdığımız matematiksel işlem yada diğer sayısal veri olması gereken işlemlerde kullanabiliyoruz. Tür dönüşümleri bilinçli ve bilinçsiz olarak 2 grupta incelenir.
Bilinçsiz(Implict) Tür Dönüşümü: Daha önce tanımladığımız bir değişkeni geçici olarak başka bir veri türüne çevirmeye bilinçsiz tür dönüşümü denir. Bu işlem küçük türün büyük türe dönüşümü ve büyük türün küçük türe dönüşümü olarak iki şekilde yapılır. Şimdi bu konuyu daha iyi kavramak için detaylı bir şekilde ele alalım.
Örneğin; Bir program için kod yazalım ve biliçsiz olarak tür dönüşümü yapalım:
int x = 5; // integer olarak x değişkenine 5 değerini atadık.
float y; // float olarak y değişkeni oluşturduk ve içine değer atamadık.
y = x; // y değişkenine x değişkenini atadık. Yani geçici olarak atama yaptık. İlerleyen kod bloklarında x değişkenini yine integer olarak kullanabiliriz.
Console.WriteLine(y);
Tanımladığımız değişkenlerin veri türlerinin dönüşümünü bazen geçici olarak yapmamız gerekebilir. Bunun nedeni yazdığımız kodda tanımladığımız değişkenin ilerleyen kod satırlarında tekrar kullanınca farklı davranmasını engellemektir.
Not: Tür dönüşümlerinde dikkat etmemiz gereken en önemli şeylerden biriside küçük kapasiteli bir veri tipini büyük kapasiteli bir veri tipine sorun olmadan dönüştürülebilirken, büyük kapasiteli bir verinin küçük kapasiteli bir veriye dönüştürüldüğü sırada doğal olarak veri kaybı yaşayabilmesidir. Çünkü normal kapasitesinin altında bir veri tipine dönüşeceği için veri kaybı oluşur. C#'ta bu işleme type-safety (tip güvenliği) denir.Bunu bilerek tür dönüşümlerimizi yaparsak hata almadan yada veri kaybı yaşamadan işlemlerimizi sorun olmadan gerçekleştirebiliriz. C#'ta küçük veri türleri büyük veri türlerine dönüştürmek mümkün ama bu işlemi otomatik olarak yapmamız mümkün değil. Bu işlemleri manuel olarak yapmak mümkün (Veri kaybı olabileceğini bilerek yapıyoruz.). Bunun için tür dönüştürme operatörünü kullanıyoruz.
Biliçsiz tür dönüşümü yapılabilecek türler:
| Kaynak | Hedef |
|---|---|
| sbyte | short, int, float, long, double, decimal |
| byte | short, ushort, int, uint, long, ulong, float, double, decimal |
| short | int, long, float, double, decimal |
| ushort | int, uint, long, ulong, float, double, decimal |
| int | long, float, double, decimal |
| uint | long, ulong, float, double, decimal |
| long, ulong | float, double, decimal |
| char | ushort, int, uint, long, ulong, float, double, decimal |
| float | double |
Bilinçli(Explicit) Tür Dönüşümü: Büyük kapasiteli bir veri tipinin küçük kapasiteli veri türüne dönüştürülme işlemidir. Yani aslında C#'ta bu otomatik yapılması mümkün olmayan ve derleyici' nin izin vermediği ama manuel olarak tür dönüştürme operatörünü kullanıp dönüşüm yapabileceğimiz (Veri kaybı olması muhtemel olan dönüşüm tipidir.) dönüşüm tipidir.
Tip Dönüşümleri Örnekleri:
using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
// explicit
double d = 123.11;
int i = (int)d;
Console.WriteLine(d);
Console.WriteLine(i);
// implicit
int j = 99;
double t = j;
// Other types
var result = Convert.ToInt16(i);
Console.WriteLine(result);
Console.ReadKey();
// expicit
double numberS = 2077.22;
int jk = (int)numberS;
// implicit
int aon = 2019;
double aonO = aon;
// other types
string strOne = "2000";
var resultTwo = Convert.ToInt32(strOne);
Console.WriteLine(resultTwo);
}
}
}