Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
C# bir dizi integral ve kayan nokta sayısal türü sağlar. herhangi iki sayısal tür arasında örtük veya açık dönüştürme vardır. Açık dönüştürme gerçekleştirmek için bir atama ifadesi kullanın.
C# dili başvuru belgesi, C# dilinin en son yayımlanan sürümünü gösterir. Ayrıca, yaklaşan dil sürümü için genel önizlemelerdeki özelliklere yönelik ilk belgeleri içerir.
Belgelerde ilk olarak dilin son üç sürümünde veya geçerli genel önizlemelerde sunulan tüm özellikler tanımlanır.
Tavsiye
Bir özelliğin C# dilinde ilk tanıtıldığı zamanları bulmak için C# dil sürümü geçmişi makalesine bakın.
Örtük sayısal dönüştürmeler
Aşağıdaki tabloda yerleşik sayısal türler arasındaki önceden tanımlanmış örtük dönüştürmeler gösterilmektedir:
| Kaynak | İçin |
|---|---|
| sbyte |
short, int, long, , float, double, decimalveya nint |
| bayt |
short, ushort, , int, uint, long, , ulong, float, double, decimal, nintveya nuint |
| kısa |
int, long, float, double, , decimalveya nint |
| ushort |
int, uint, long, , ulong, float, double, , decimal, nintveya nuint |
| int |
long, float, double, decimalveya nint |
| işaretsiz tam sayı |
long, ulong, float, double, , decimalveya nuint |
| long |
float, double veya decimal |
| ulong |
float, double veya decimal |
| float | double |
| nint |
long, float, doubleveya decimal |
| nuint |
ulong, float, doubleveya decimal |
Uyarı
, , , long, , veya nuintfloat ile , , veya longulongnintnuint arasında intyapılan örtük dönüştürmeler duyarlık kaybına double neden olabilir, ancak hiçbir zaman bir büyüklük sırası kaybına neden olmaz. nintulonguint Diğer örtük sayısal dönüştürmeler hiçbir zaman bilgi kaybetmez.
Ayrıca şunları da unutmayın:
Herhangi bir tam sayı türü , herhangi bir kayan nokta sayısal türüne örtük olarak dönüştürülebilir.
ve
bytetürlerinesbyteörtük dönüştürme yoktur. vedoubletürlerindendecimalörtük dönüştürme yoktur.Türü ve
decimalveyafloattürleri arasındadoubleörtük dönüştürme yoktur.Türündeki
intsabit ifadenin değeri (örneğin, tamsayı değişmez değeriyle temsil edilen bir değer) örtük olarak , ,byte,short,ushortuint, , ,ulongnintveyanuinthedef türün aralığı içindeyse dönüştürülebilirsbyte:byte a = 13; byte b = 300; // CS0031: Constant value '300' cannot be converted to a 'byte'
Sabit değer hedef türün aralığında değilse, bir derleyici hatası CS0031 oluşur.
Açık sayısal dönüştürmeler
Aşağıdaki tabloda, örtük dönüştürme olmayan yerleşik sayısal türler arasındaki önceden tanımlanmış açık dönüştürmeler gösterilmektedir:
| Kaynak | İçin |
|---|---|
| sbyte |
byte, ushort, uint, ulongveya nuint |
| bayt | sbyte |
| kısa |
sbyte, byte, ushort, uint, , ulongveya nuint |
| ushort |
sbyte, byte veya short |
| int |
sbyte, byte, short, , ushort, uint, ulongveya nuint |
| işaretsiz tam sayı |
sbyte, byte, short, ushort, , intveya nint |
| long |
sbyte, byte, short, , ushort, int, uint, , ulong, nintveya nuint |
| ulong |
sbyte, byte, short, , ushort, int, uint, , long, nintveya nuint |
| float |
sbyte, byte, , short, ushort, int, , uint, long, ulong, decimal, nintveya nuint |
| çift |
sbyte, byte, short, , ushort, int, uint, , long, ulong, float, decimal, nintveya nuint |
| ondalık |
sbyte, byte, short, , ushort, int, uint, , long, ulong, float, double, nintveya nuint |
| nint |
sbyte, , byteshort, , ushort, int, uint, , ulongveyanuint |
| nuint |
sbyte, , byteshort, , ushort, int, uint, , longveyanint |
Uyarı
Açık sayısal dönüştürme, veri kaybına neden olabilir veya genellikle bir OverflowExceptionözel durum oluşturur.
Ayrıca şunları unutmayın:
Bir integral türündeki bir değeri başka bir tamsayıyı türüne dönüştürdüğünüzde, sonuç taşma denetimi bağlamını temel alır. Denetlenen bir bağlamda, kaynak değer hedef türün aralığı içindeyse dönüştürme başarılı olur. Aksi takdirde, bir OverflowException atılır. İşaretlenmemiş bir bağlamda dönüştürme her zaman başarılı olur ve aşağıdaki gibi devam eder:
- Kaynak türü hedef türden büyükse, kaynak değeri "ek" en önemli bitleri atılarak kesilir. Sonuç daha sonra hedef türün değeri olarak değerlendirilir.
- Kaynak türü hedef türden küçükse, kaynak değer, hedef türle aynı boyuta ulaşması için ya işaret genişletilir ya da sıfır genişletilir. Kaynak türü imzalıysa, işaret genişletmesi kullanılır; kaynak türü işaretsizse sıfır genişletmesi kullanılır. Sonuç daha sonra hedef türün değeri olarak değerlendirilir.
- Kaynak türü hedef türle aynı boyuttaysa, kaynak değer hedef türün değeri olarak değerlendirilir.
Bir
decimaldeğeri tam sayı türüne dönüştürdüğünüzde, bu değer sıfıra doğru en yakın tam sayı değerine yuvarlanir. Sonuçta elde edilen tam sayı değeri hedef türün aralığının dışındaysa, bir OverflowException oluşturulur.Bir
doubleveyafloatdeğerini tam sayı türüne dönüştürdüğünüzde, bu değer sıfıra doğru en yakın tam sayı değerine yuvarlanir. Sonuçta elde edilen tam sayı değeri hedef türün aralığının dışındaysa, sonuç taşma denetimi bağlamını temel alır. denetlenen bir bağlamda, OverflowException işaretlenmemiş bir bağlamda ise hedef türün belirtilmemiş bir değeri elde edilir.değerine dönüştürdüğünüzde
doublefloatdouble, değer enfloatyakın değere yuvarlanir. Değer türünedoublesığmayacakfloatkadar küçük veya çok büyükse, sonuç sıfır veya sonsuz olur.veya
floatdoubledönüştürdüğünüzdedecimal, kaynak değer gösterimedecimaldönüştürülür ve gerekirse 28. ondalık basamak sonrasına en yakın sayıya yuvarlanir. Kaynak değerin değerine bağlı olarak aşağıdaki sonuçlardan biri oluşabilir:- Kaynak değer olarak
decimaltemsil edilemeyecek kadar küçükse sonuç sıfır olur. - Kaynak değer NaN (sayı değil), sonsuz veya olarak
decimaltemsil edilemeyecek kadar büyükse, bir OverflowException oluşturulur.
- Kaynak değer olarak
veya
decimalöğesine dönüştürdüğünüzdefloat, kaynak değer sırasıyla endoubleyakın veyafloatdeğere yuvarlanirdouble.
C# dil belirtimi
Daha fazla bilgi için C# dil belirtimininaşağıdaki bölümlerine bakın: