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. Örtük veya açık olmak üzere iki sayısal tür arasında bir dönüştürme vardır. Açık dönüştürme gerçekleştirmek için bir atama ifadesi kullanmanız gerekir.
Ö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, doubleveya decimalveya nint |
| ushort |
int, uint, long, ulong, , float, doubleveya decimal, nintveya nuint |
| int |
long, float, doubleveya decimal, nint |
| işaretsiz tam sayı |
long, ulong, float, doubleveya 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 floatnuint ile , veya 'den nuintlongulongnintintgelen ö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
sbytetürlerinebyteörtük dönüştürme yoktur. vedecimaltürlerindendoubleörtük dönüştürme yoktur.Türü ve
floatveyadoubletürleri arasındadecimalörtük dönüştürme yoktur.Türündeki sabit ifadenin
intdeğeri (örneğin, tamsayı değişmez değeriyle temsil edilen bir değer), hedef türün aralığı içindeyse örtük olarak ,byte,short,ushort,uint, ,ulongnintveyanuintöğesine dönüştürülebilirsbyte:byte a = 13; byte b = 300; // CS0031: Constant value '300' cannot be converted to a 'byte'Yukarıdaki örnekte gösterildiği gibi, sabit değer hedef türün aralığı içinde değilse , cs0031 derleyici hatası 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
decimaldoubledönüştürdüğünüzdefloat, 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.
veya
doubleöğesine dönüştürdüğünüzdedecimal, kaynak değer sırasıyla enfloatyakın veyadoubledeğere yuvarlanirfloat.
C# dil belirtimi
Daha fazla bilgi için C# dil belirtimininaşağıdaki bölümlerine bakın: