Tamsayı sayısal türleri (C# Başvurusu)Integral numeric types (C# reference)

Tamsayı sayısal türleri bir alt kümesidir basit türler ve ile başlatılabilir değişmez değerleri.The integral numeric types are a subset of the simple types and can be initialized with literals. Tüm tamsayı türleri de değer türleridir.All integral types are also value types. Tüm tamsayı sayısal türleri desteği aritmetik, bit düzeyinde mantıksal, karşılaştırma ve eşitlik işleçleri.All integral numeric types support arithmetic, bitwise logical, comparison, and equality operators.

İntegral türündeki özellikleriCharacteristics of the integral types

C#Aşağıdaki önceden tanımlanmış tamsayı türlerini destekler:C# supports the following predefined integral types:

C#anahtar yazınC# type/keyword AralıkRange BoyutSize .NET türü.NET type
sbyte -128 ila 127 arasında-128 to 127 İşaretli 8 bit tam sayıSigned 8-bit integer System.SByte
byte 0 ile 255 arasında0 to 255 İmzalanmamış 8 bit tam sayıUnsigned 8-bit integer System.Byte
short -32.768 için 32.767-32,768 to 32,767 İşaretli 16 bit tam sayıSigned 16-bit integer System.Int16
ushort 0 ile 65.535 arasındaki0 to 65,535 16 bit işaretsiz tamsayıUnsigned 16-bit integer System.UInt16
int -2.147.483.648 için 2.147.483.647-2,147,483,648 to 2,147,483,647 İşaretli 32 bit tam sayıSigned 32-bit integer System.Int32
uint 0 için 4.294.967.295'e0 to 4,294,967,295 32-bit işaretsiz tamsayıUnsigned 32-bit integer System.UInt32
long -9,223,372,036,854,775,808 için 9.223.372.036.854.775.807-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 İşaretli 64 bit tam sayıSigned 64-bit integer System.Int64
ulong 0 için 18,446,744,073,709,551,6150 to 18,446,744,073,709,551,615 64-bit işaretsiz tamsayıUnsigned 64-bit integer System.UInt64

Önceki tabloda her C# en soldaki sütun türü anahtar kelimedir karşılık gelen .NET türü için bir diğer ad.In the preceding table, each C# type keyword from the leftmost column is an alias for the corresponding .NET type. Birbirinin yerine kullanılabilir.They are interchangeable. Örneğin, aşağıdaki bildirimleri aynı türde değişkenleri bildirin:For example, the following declarations declare variables of the same type:

int a = 123;
System.Int32 b = 123;

Her bir integral türünün varsayılan değeri sıfırdır 0.The default value of each integral type is zero, 0. Her bir integral türü olan MinValue ve MaxValue minimum ve maksimum değerin türü sağlayan sabitler.Each of the integral types has the MinValue and MaxValue constants that provide the minimum and maximum value of that type.

Kullanım System.Numerics.BigInteger yapısı hiçbir üst işaretli bir tam sayı veya alt sınırlarını temsil etmek için.Use the System.Numerics.BigInteger structure to represent a signed integer with no upper or lower bounds.

Tamsayı sabit değerleriIntegral literals

Tamsayı sabit değerleri olarak belirtilebilir ondalık sabit değerleri, onaltılık değişmez değerler, veya ikili sabit dizeler.Integral literals can be specified as decimal literals, hexadecimal literals, or binary literals. Her bir örneği aşağıda gösterilmiştir:An example of each is shown below:

var decimalLiteral = 42;
var hexLiteral = 0x2A;
var binaryLiteral = 0b_0010_1010;

Ondalık sabit değerleri herhangi bir önek gerektirmez.Decimal literals don't require any prefix. x Veya X önek belirten bir onaltılık değişmez değeri.The x or X prefix signifies a hexadecimal literal. b Veya B önek belirten bir ikili değişmez değer.The b or B prefix signifies a binary literal. Bildirimi binaryLiteral kullanımını gösteren _ olarak bir basamak ayıracı.The declaration of binaryLiteral demonstrates the use of _ as a digit separator. Basamak ayırıcı, tüm sayısal değişmez değerleri ile kullanılabilir.The digit separator can be used with all numeric literals. İkili sabit değerler ve basamak ayıracı _ başlayarak desteklenir C# 7.0.Binary literals and the digit separator _ are supported starting with C# 7.0.

Değişmez değer sonekiLiteral suffixes

l Veya L sonekini belirtir, tam sayı sabiti olmalıdır long türü.The l or L suffix specifies that the integral literal should be of the long type. ul Veya UL sonekini belirtir ulong türü.The ul or UL suffix specifies the ulong type. Varsa L soneki 9.223.372.036.854.775.807 büyük bir sabit değer ınternationalized (en büyük değerini long), değeri dönüştürülür ulong türü.If the L suffix is used on a literal that is greater than 9,223,372,036,854,775,807 (the maximum value of long), the value is converted to the ulong type. Bir tamsayı sabit değeri tarafından temsil edilen değeri aşarsa UInt64.MaxValue, bir derleyici hatası CS1021 gerçekleşir.If the value represented by an integral literal exceeds UInt64.MaxValue, a compiler error CS1021 occurs.

Not

Küçük harf "l" sonek olarak kullanabilirsiniz.You can use the lowercase letter "l" as a suffix. Ancak, bu bir derleyici uyarısı oluşturur çünkü "m" harfinin basamağı "1" ile kolaylıkla karıştırılırHowever, this generates a compiler warning because the letter "l" is easily confused with the digit "1." "M" daha anlaşılır olması için kullanın.Use "L" for clarity.

Bir integral sabit değerinin türüType of an integral literal

Bir tamsayı sabit değeri sonek türünü ilk değerini gösterilebilir aşağıdaki türlerde ise:If an integral literal has no suffix, its type is the first of the following types in which its value can be represented:

  1. int
  2. uint
  3. long
  4. ulong

Bir integral sabit değer atama ya da bir tür dönüştürme kullanarak varsayılandan daha küçük bir aralık türüyle dönüştürebilirsiniz:You can convert an integral literal to a type with a smaller range than the default using either an assignment or a cast:

byte byteVariable = 42; // type is byte
var signedByte = (sbyte)42; // type is sbyte.

Bir integral sabit hazır değeri üzerinden ataması, bir tür dönüştürme veya son ekini kullanarak varsayılan değerinden daha büyük bir aralıkla türüne dönüştürebilirsiniz:You can convert an integral literal to a type with a larger range than the default using either assignment, a cast, or a suffix on the literal:

var unsignedLong = 42UL;
var longVariable = 42L;
ulong anotherUnsignedLong = 42;
var anotherLong = (long)42;

DönüşümlerConversions

Örtük bir dönüştürme (adlı bir dönüştürme genişletme) hedef türüne kaynak türündeki tüm değerleri depolayabileceği herhangi iki tamsayı türleri arasında.There's an implicit conversion (called a widening conversion) between any two integral types where the destination type can store all values of the source type. Örneğin, örtük bir dönüştürme yoktur int için long çünkü aralığını int değerleri olan uygun bir alt kümesini long.For example, there's an implicit conversion from int to long because the range of int values is a proper subset of long. Bir küçük işeritsiz tamsayı türünü daha büyük bir işaretli tamsayı türüne örtük dönüşümlere vardır.There are implicit conversions from a smaller unsigned integral type to a larger signed integral type. Herhangi bir kayan nokta türü için herhangi bir tamsayı türü arasında'örtük bir dönüştürme yoktur.There's also an implicit conversion from any integral type to any floating-point type. Herhangi işaretli integral türünden herhangi bir işaretsiz tamsayı türü için örtük dönüştürme vardır.There's no implicit conversion from any signed integral type to any unsigned integral type.

Örtük bir dönüştürme kaynak türden hedef türe tanımlı değil, bir tamsayı türü başka bir integral türe dönüştürmek için açık bir tür dönüştürme kullanmanız gerekir.You must use an explicit cast to convert one integral type to another integral type when an implicit conversion is not defined from the source type to the destination type. Bu adlı bir daraltma dönüştürmesi.This is called a narrowing conversion. Dönüştürme veri kaybıyla sonuçlanabildiğinden açık durumda gereklidir.The explicit case is required because the conversion can result in data loss.

Ayrıca bkz.See also