InvalidCastException Nedir?
"InvalidCastException". Bu, tür dönüşümü sırasında C#'ın beklenmedik bir durumla karşılaştığı anlamına gelir.
Düşünsenize, iki değişkeniniz var: biri bir int türünde, diğeri ise double. Birinden diğerine dönüşüm yapmaya çalışıyorsunuz, ama işler ters gidiyor. C# derleyicisi, iki tür arasındaki dönüşümün geçerli olmadığını ve InvalidCastException hatasını size vermek zorunda kalıyor.
Hata Mesajı:
```plaintext
System.InvalidCastException: 'Casting from type 'System.Int32' to type 'System.Double' is not valid.'
```
Hatanın Gerçek Sebebi:
Birkaç örnekle, hatanın gerçek sebeplerine bakalım:
```csharp
object obj = "100";
int x = (int)obj; // InvalidCastException!
```
Bu kodu çalıştırdığınızda InvalidCastException hatası alırsınız çünkü, `obj` nesnesi aslında bir string türündedir ve bu, int türüne doğrudan dönüştürülemez.
Bu Hatayı Çözmenin Yolu:
Şimdi, bu hatayı nasıl çözebileceğimizi görelim. İşte birkaç çözüm önerisi:
```csharp
object obj = "100";
int x = Convert.ToInt32(obj); // Hata yok!
```
Bu şekilde, tür dönüştürme işlemini güvenli bir şekilde yapıyoruz. `Convert.ToInt32()` metodu, `obj` nesnesinin türüne bakarak doğru dönüşümü sağlar.