İnt veya Int32 kullanmalı mıyım


352

C #, intve Int32aynı şey, ama ben hiçbir neden belirtilmeksizin inttercih birkaç kez okudum Int32. Bir sebebi var mı, umrumda mı?


Skeet tarafından, API'leri programlarken Int32 yerine int32'yi tercih ettiği bu konuda tweet atın.
comecme

@JohnBubriski: ve bunu kullanmak için daha az sayıda ifade gerektirdiğini (veya System.Int32
yazacağınız

Soru var: biz doğrudan CLR türü kullanmıyoruz ama neden onlara ihtiyacımız var ??
AminM

@JohnBubriski Facebook durum güncellemesi yazmak bir kod parçasından daha kolaydır. Kötü düşünce orada! Okunması ve anlaşılması daha kolay yazmak, yazmaktan çok daha önemlidir. When something can be read without effort, great effort has gone into its writing. Easy writing is hard reading
7hi4g0

Yanıtlar:


134

ECMA-334 : 2006 C # Dil Özellikleri (s18):

Önceden tanımlanmış türlerin her biri, sistem tarafından sağlanan bir tür için kısaltmadır. Örneğin, anahtar kelime intyapıya karşılık gelir System.Int32. Stil olarak, tam sistem türü adının kullanılması yerine anahtar kelimenin kullanılması tercih edilir.


271

İkisi de eşanlamlıdır; intbiraz daha tanıdık Int32görünecek, 32 bitlik kodunuzu okuyanlara daha açık hale gelecektir. Ben intsadece 'bir tamsayı', Int32nerede boyutu önemli (kriptografik kod, yapıları), bu yüzden gelecekteki intkoruyucular uygun bir büyütmek için güvenli olduğunu bilecek , ama Int32aynı şekilde değiştirme dikkat etmeliyim kullanmak eğilimindedir .

Ortaya çıkan kod aynı olacaktır: fark tamamen okunabilirlik veya kod görünümündedir.


65
Kodunuzu okuyan kişiler int'in System.Int32 için bir takma ad olduğunu bilmelidir. Okunabilirlik konusunda tutarlılık çok daha önemlidir.
Troels Thomsen

11
Eski C ++ zihniyetine sahip olanlar için IntPtr, 32 bit işletim sisteminde 32 bit ve 64 bit işletim sisteminde 64 bit olacak şekilde tasarlanmıştır. Bu davranış, özet etiketinde özellikle belirtilmiştir. msdn.microsoft.com/en-us/library/system.intptr(VS.71).aspx
diadem

87

Her ikisi de 32 bit tamsayılar ve belirttiğiniz diğer posterler gibi, hangisini kullandığınız çoğunlukla sözdizimsel bir meseledir. Ancak her zaman aynı şekilde davranmazlar. Örneğin, C # derleyicisi buna izin vermez:

public enum MyEnum : Int32
{
    member1 = 0
}

ancak buna izin verir:

public enum MyEnum : int
{
    member1 = 0
}

Git şekil.


9
System.Int32 türünü incelemek için Reflector kullanıyorsanız, bunun bir sınıf değil, bir yapı olduğunu göreceksiniz. Kod şöyle görünür: [Serializable, StructLayout (LayoutKind.Sequential), ComVisible (true)] public struct Int32: IComparable, IFormattable, IConvertible, IComparable <int>, IEquatable <int> {public const int MaxValue = 0x7fffffff; ... Bir yapıdan tür türeyemezsiniz. En azından size bunu söyleyen bir hata alırsınız. Ancak, numaralandırma davranışı biraz farklıdır, bir sonraki yorum yapacağım.
raddevus

16
Int32'den bir enum türetememe, .NET koduna bakarak da görülebilen tasarlanmış bir davranıştır: [Serializable, ComVisible (true)] public abstract class Enum: ValueType, IComparable, IFormattable, Enum'un türetildiğine dikkat edin ValueType'tan? İçsel veri türünün (int, bayt, vb.) Yanı sıra başka bir şeyden bir enum türetmeye çalışırsanız, şöyle bir hata alırsınız: Bayt, sbyte, kısa, ushort, int, uint, uzun veya ulong bekleniyor .
raddevus

2
Bir belirterek bu @daylight not enumkullanımına intdeğil ise derive, ancak bir belirterek underlying type; bkz. msdn.microsoft.com/en-us/library/sbbt4032.aspx#code-snippet-2
Jeroen Wiert Pluimers

2
@JeroenWiertPluimers Ancak, altta yatan türü tam anlamıyla kontrol etmeyi ve CS1008'i atmayı neden seçtikleri hala ilginçtir , çünkü altta yatan tür yalnızca numaradaki sabitlerin türü olduğundan, derlendiğinde gerçekten önemli değildir.
IllidanS4 Monica'nın

5
@ IllidanS4, yeni derleyici Roslyn ile - bu düzeltildi ve her ikisi de geçerli
Grundy

49

Örneğin - Hep sistem türleri kullanmak Int32yerine int. Uygulamalı .NET Framework Programlama'yı okuduktan sonra bu uygulamayı benimsedim - yazar Jeffrey Richter, tam tür adlarını kullanmak için iyi bir durum ortaya koyuyor. Bana yapışan iki nokta:

  1. Tür adları .NET dilleri arasında değişebilir. Örneğin, C # 'da, longSystem.Int64 ile eşlenirken, yönetilen uzantılarla C ++' da, longInt32 ile eşlenir. .NET kullanılırken diller karıştırılabilir ve eşleştirilebileceğinden, okuyucunun tercih ettiği dil ne olursa olsun, açık sınıf adını kullanmanın her zaman daha açık olacağından emin olabilirsiniz.

  2. Birçok çerçeve yöntemi, yöntem adlarının bir parçası olarak tür adlarına sahiptir:

    BinaryReader br = new BinaryReader( /* ... */ );
    float val = br.ReadSingle();     // OK, but it looks a little odd...
    Single val = br.ReadSingle();    // OK, and is easier to read

Bu sorun, Visual Studio otomatik tamamlama hala int kullanıyor olmasıdır. Yani bir yaparsanız List<Tuple<Int32, Boolean>> test = new, Visual Studio şimdi ekleyecektir List<Tuple<int, bool>>(). Bu otomatik tamamlamaları değiştirmenin bir yolunu biliyor musunuz?
19:51

2
Evet, bu bir sorun; hayır, onları nasıl değiştireceğimi bilmiyorum. 2. nokta artık benim için bir sorun değil, çünkü varkodun kelimeliğini azaltmak için olabildiğince fazla kullanma eğilimindeyim . Otomatik tamamlamanın içeri girip zemine tükürdüğü yerlerde, manuel olarak ayarlıyorum - tam anlamıyla bir iki saniye.
Remi Despres-Smyth

20

int bir C # anahtar kelimesidir ve açıktır.

Çoğu zaman önemli değil ama Int32'ye karşı çıkan iki şey:

  • Bir "Sistem kullanarak"; Beyan. "int" kullanmak, using deyimi gerektirmez.
  • Int32 adlı kendi sınıfınızı tanımlamak mümkündür (bu aptalca ve kafa karıştırıcı olacaktır). int her zaman int anlamına gelir.

Kendi 'var' sınıfınızı oluşturmak da mümkündür, ancak bu insanların onu kullanmasını engellemez.
Neme

Her anahtar kelime bir C # anahtar kelimesidir. int zaten C ve C ++ 'da kullanılıyordu. Yani özellikle C # ile ilgili hiçbir şey yok.
MrFox

12

Daha önce de belirtildiği gibi, int= Int32. Güvende olmak için , veri türü sınırlarına önem veren her şeyi kullandığınız int.MinValue/ int.MaxValueuyguladığınızdan emin olun . Diyelim ki .NET intşimdi Int64, kodunuzun sınırlara daha az bağımlı olacağına karar verdi .


8
@spoulson: 1. satırdaki yorum hatası: Eşit türler arasında atama yasaklandı. Evet, kötü bir şaka.
Johann Gerell

22
C # spec (bu bir C #, .NET kararı değil) şimdiye kadar int64 bit yapmak için değiştirmeye karar verdiyse , bu tür bir olasılığa karşı savunmacı bir şekilde kodlamanın mümkün olduğuna (veya kesinlikle mantıklı) inanmayacağım kadar kırıcı bir değişiklik olurdu .
Jon Skeet

9

Türler için bayt boyutu, yalnızca tek bir dille uğraşmanız gerektiğinde (ve matematik taşmalarını kendinize hatırlatmanız gerekmeyen kodlar için) çok ilginç değildir. İlginç olan kısım, bir dilden diğerine, C #'dan COM nesnesine vb. Arasında köprü oluşturduğunuzda veya biraz kaydırma veya maskeleme yaptığınızda ve kendinize hatırlatmanız (ve kod gözden geçirme ortaklarınız) veri boyutu.

Uygulamada, genellikle yönetilen C ++ (örneğin C # için köprü) ve yönetilmeyen / yerel C ++ yazdığım için kendime hangi boyutta olduklarını hatırlatmak için Int32 kullanıyorum.

Muhtemelen bildiğiniz sürece, C # 64 bit, ancak doğal C ++ 'da 32 bit veya char unicode / 16-bit iken C ++' da 8 bittir. Ama bunu nasıl biliyoruz? Cevap, çünkü kılavuzda aradık ve öyle dedi.

Zaman ve deneyimlerle, C # ve diğer diller arasında köprü oluşturmak için kodlar yazdığınızda daha dikkatli davranmaya başlayacaksınız (buradaki bazı okuyucular "neden yapıyorsunuz?"), Ancak IMHO bunun daha iyi bir uygulama olduğuna inanıyorum çünkü Geçen hafta ne kodladığımı hatırlayamıyorum (veya API belgemde "bu parametre 32 bit tam sayıdır" belirtmek zorunda değilim).

In F # (bunu hiç kullanmadım rağmen), onlar tanımlamak int , Int32 ve nativeint . Aynı soru "hangisini kullanıyorum?" Diğerlerinin de belirttiği gibi, çoğu durumda, önemli olmamalıdır (şeffaf olmalıdır). Ama ben sadece belirsizlikleri gidermek için int32 ve uint32'yi seçerdim.

Sanırım Int32'yi ne zaman kullanacağınızı haklı çıkarmak için hangi uygulamaları kodladığınıza, kimi kullandığınıza, sizin ve ekibinizin takip ettiği kodlama uygulamalarına vb. Bağlı olacaktır.


Bu, .net'in amacını geçersiz kılmaz mı? Neyse, F # nedir, Gates'in emekliliği ile ortadan kalktığı bir fikir ...
Nick Turner

8

Orada arasında hiçbir fark intve Int32ancak olarak intbir dil birçok kişi (sadece olduğu gibi üslup tercih anahtar kelime stringvs String).


7

Deneyimlerime göre bu bir kongre olayıydı. Int32 üzerinde int kullanmak için herhangi bir teknik nedenin farkında değilim, ama:

  1. Yazmak daha hızlı.
  2. Tipik C # geliştiricisine daha aşina.
  3. Varsayılan görsel stüdyo sözdizimi vurgulamasında farklı bir renk.

Özellikle sonuncusunu çok seviyorum. :)


7

Her zaman bir değişken tanımlarken aliased türleri (int, string, vb.) Kullanın ve statik bir yöntem erişirken gerçek adı kullanın:

int x, y;
...
String.Format ("{0}x{1}", x, y);

İnt.TryParse () gibi bir şey görmek çirkin gözüküyor. Bunu stilden başka yapmamın başka bir nedeni yok.


5

En iyi uygulama int kullanmak olduğunu biliyorum ve tüm MSDN kodu int kullanır. Ancak bildiğim kadarıyla standardizasyon ve tutarlılığın ötesinde bir neden yok.


5

Her ne kadar (çoğunlukla) özdeş olsalar da (bir [hata] farkı için aşağıya bakın), kesinlikle önemsemelisiniz ve Int32'yi kullanmalısınız.

  • 16 bitlik bir tamsayının adı Int16'dır. 64 bit tam sayı için Int64 ve 32 bit tam sayı için sezgisel seçim: int veya Int32?

  • Int16, Int32 veya Int64 türündeki bir değişkenin boyutu sorusu kendi kendine referanstır, ancak int türündeki bir değişkenin boyutu sorusu, ne kadar önemsiz, dikkat dağıtıcı olursa olsun, karışıklığa, zaman kaybetmeye, tartışmayı engellemeye vb. (bu sorunun olması gerçeği kanıtlamaktadır)

  • Int32 kullanmak, geliştiricinin kendi tür seçiminin bilincinde olmasını teşvik eder. Bir int tekrar ne kadar büyük? Oh evet, 32. Boyut isme dahil edildiğinde, türün boyutunun gerçekten dikkate alınma olasılığı daha yüksektir. Int32 kullanımı diğer seçenekler hakkında da bilgi sağlar. İnsanlar en azından fark etmeye zorlanmadığında, int'in "tamsayı tipi" olması çok kolaylaşır.

  • Çerçeve içindeki 32 bit tamsayılarla etkileşime girmesi amaçlanan sınıf Int32 olarak adlandırılır. Bir kez daha, hangi: daha sezgisel, daha az kafa karıştırıcı, bir (gereksiz) çevirisini yoksun (değil sistemde bir çeviri, ama geliştirici zihninde) vb int lMax = Int32.MaxValueveya Int32 lMax = Int32.MaxValue?

  • int, tüm .NET dillerindeki bir anahtar kelime değildir.

  • Neden hiç değişmeyeceğine dair argümanlar olsa da, int her zaman bir Int32 olmayabilir.

Dezavantajları yazmak için iki ekstra karakter ve [bug].

Bu derlenmeyecek

public enum MyEnum : Int32
{
    AEnum = 0
}

Ancak bu:

public enum MyEnum : int
{
    AEnum = 0
}

"16 bit tam sayı adı Int16, 64 bit tam sayı için Int64 ve 32 bit tam sayı için sezgisel seçim: int veya Int32?", Ancak bunlar için de C # anahtar sözcükleri vardır. Int16 = kısa Int64 = uzun Yani cevabınızdan bir tanesi yanlış bir varsayım üzerine kuruludur.
Mel

"int değişkeninin türü, ne kadar önemsiz olursa olsun, dikkat dağıtan, karışıklığa, zaman kaybına, tartışmaya engel olan, vb. gibi mükemmel bir soru ve sorulardır (bu sorunun var olması gerçeği kanıtlamaktadır)." Benimle dalga mı geçiyorsun? Kaputun arkasında ne olduğunu tam olarak anlamadığınız bir dilde çalışıyorsunuz. Geliştirici, ilkel tipin ne anlama geldiğini anlamıyorsa, mutfak sanatlarını almalıdır. Bir VB geliştiricisi gibi geliyor. ilkel kullanımı herhangi bir dile özgüdür ve tercih edilmelidir. İlkelleri sevmiyorsanız, ancak gerçekleri telafi etmiyorsanız sorun değil.
Nick Turner

Hmm, umursamam gerektiği fikrine kesinlikle katılmıyorum ... ama numaraların sadece anahtar kelimelerden miras alabileceğini bilmiyordum. Oldukça işe yaramaz bir gerçek, ama bilmek hala eğlenceli :)
Jowen

4

Umurumda değil. intÇoğu zaman kullanmalısınız . Gelecekte programınızın daha geniş bir mimariye taşınmasına yardımcı olacaktır (şu anda intbir takma addır, System.Int32ancak bu değişebilir). Yalnızca değişkenin bit genişliği önemli olduğunda (örneğin: a'nın belleğindeki düzeni kontrol etmek için struct) int32ve diğerlerini (ilişkili " using System;" ile) kullanmalısınız.


1
Ciddi olamazsın ... taşımayı kolaylaştırır mı? Bul ve değiştir işleminin çok önemli olduğunu düşünmüyorum.
Vince Panuccio

2
(şu anda int System.Int32 için bir takma addır, ancak bu değişebilir) ? Ah bir tane ... Ciddi misin?
Oybek

Neden sonunda çöp kutusuna göndermek istediğiniz bir dilde kod yazasınız? Yönetim kararı ile görünüyor. İnt veya Int32 kullanın. Int32 VB'ye benziyor
Nick Turner

Demek istediğim, MAYBE idi (ve bu büyük bir MAYBE, tasarımcıların neden böyle yaptığını bilmiyorum), üzerinde çalıştığınız kemerle aynı genişliğe sahip bir int bildirmek için bir yolunuz olmalı, C'nin int / long / ... gibi çalışır. Bu, tam olarak bunu yapmak için tasarlanmış bir mekanizmadır (int alias int32 için). Ve göz önünde bulundurun Microsoft her zaman "int" ve "Int32" yi kullanmanızı önerir (tıpkı orijinal niyetleri gibi, olduğu gibi). Biliyorum, bu büyük bir EĞER ... Bu yanıtı yazdığımda 64 bit .NET çerçevesi yoktu, bu yüzden bu durumda ne yapacaklarını bilmiyordum.
Yanko Hernández Alvarez

3

int, C # dilinin System.Int32 kısayoludur.

Bu Microsoft bu eşleme değiştirebilir anlamına gelirken, FogCreek tartışmalarında bir yazı [kaynak]

"64 bit sorun - Microsoft gerçekten de .NET Framework'ün 64-bit sürümü üzerinde çalışıyor ama eminim int bu sistemde 64 bit eşlemeyeceğim.

Nedenleri:

1. C # ECMA standardı özellikle int'in 32 bit ve uzunluğunun 64 bit olduğunu söylüyor.

2. Microsoft, Framework sürüm 1.1'de Array.GetLength dışında Array.GetLongLength gibi int değerleri yerine uzun değerler döndüren ek özellikler ve yöntemler tanıttı.

Bu yüzden, tüm yerleşik C # türlerinin mevcut eşlemelerini koruyacağını söylemek güvenli. "


64 bit sürüm tanıtıldıysa, muhtemelen C # 'a (şu anda F #'da kullanıldığı için)' nativeint 'ekleyeceklerdir. Bu sadece 'int'i tanıtmanın ve bunu bir Int32 olarak tanımlamanın bir hata olduğunu güçlendirir! Ve böylece bir API (yani ReadInt32 ReadInt değil), renk (koyu ve açık mavi) ve büyük / küçük harf duyarlılığı (DateTime vs int) açısından tutarsız. yani neden 'DateTime' değer türünün Int32 gibi bir takma adı yok?
Carlo Bos

3

int System.Int32 ile aynıdır ve derlendiğinde CIL'de aynı şeye dönüşür .

C # C ve C ++ (ve Java) gibi görünmek istediği için C # 'da geleneksel olarak int kullanıyoruz ve orada kullandığımız şey bu ...

BTW, çeşitli Windows API işlevlerinin ithalatını bildirirken System.Int32'yi kullanıyorum. Bu tanımlı bir konvansiyon olup olmadığından emin değilim, ancak harici bir DLL'e gittiğimi hatırlatıyor ...


3

Bir zamanlar, int veri türü derleyici tarafından hedeflenen makinenin kayıt boyutuna sabitlendi. Örneğin, 16 bitlik bir sistem için derleyici 16 bitlik bir tamsayı kullanır.

Bununla birlikte, şükürler olsun ki artık 16-bit görmüyoruz ve 64-bit popüler insanlar almaya başladığında, eski yazılımlarla uyumlu hale getirmekle daha fazla ilgileniyordu ve 32-bit o kadar uzun sürdü ki çoğu derleyici için bir int sadece 32 bit olduğu varsayılır.


3

Microsoft'un kullanılmasını öneriyorum StyleCop'unu .

Gibi FxCop , ancak stil ilgili sorunlar için. Varsayılan yapılandırma Microsoft'un dahili stil kılavuzlarıyla eşleşir, ancak projeniz için özelleştirilebilir.

Alışmak biraz zaman alabilir, ancak kesinlikle kodunuzu güzelleştirir.

İhlalleri otomatik olarak kontrol etmek için oluşturma işleminize dahil edebilirsiniz.


Bu konuda StyleCop'a tamamen katılmıyorum. evet iyi ama Int32 kullanmayı tercih ediyorum, neden? iki aşağılık cevap gibi cevaplardan kaçınmak için. İnsanlar Int32'yi C ile nasıl temsil edildiklerini karıştırıyorlar
John Demetriou

2

intve Int32aynı. intiçin bir takma addır Int32.


int bir takma ad değil, bir anahtar kelimedir. Diğer cevaplara bakın.
Timores

int kesinlikle dil için bir anahtar kelime ama aynı zamanda System.Int32 olarak adlandırılabilir. Buna ek olarak, bunu düşünmenin başka bir yolu da using int = System.Int32; tüm kaynak kodu dosyalarınız için direktifiniz olmasıdır.
uygar donduran

2

Umurumda değil. Boyut bir endişe ise, bayt, kısa, int, sonra uzun kullanırım. İnt32'den daha büyük bir int kullanmanızın tek nedeni, 2147483647'den daha yüksek veya -2147483648'den daha düşük bir sayıya ihtiyacınız varsa.

Bunun dışında umurumda değil, endişe edilecek diğer birçok şey var.


System.Int64
Keith

22
Soruyu yanlış anladınız. OP, "int i" ve "Int32 i" bildirimleri arasında bir fark olup olmadığını soruyor.
kuzgun

2

Uygulamada hiçbir fark yaratmaz ve zamanla kendi sözleşmenizi kabul edersiniz. Statik yöntemler ve bu türleri kullanırken bir tür ve sınıf sürümünü atarken anahtar kelime kullanma eğilimindedir:

int total = Int32.Parse("1009");


1

Microsoft'un bazı yeni fangled sürümüne bir tamsayı için varsayılan uygulamayı değiştirmesi durumunda int kullanıyorum (buna Int32b diyelim).

Microsoft daha sonra int diğer adını Int32b için değiştirebilir ve yeni (ve umarım geliştirilmiş) tamsayı uygulama yararlanmak için kodumu değiştirmek zorunda değilsiniz.

Aynı tür anahtar kelimeler için de geçerlidir.


0

Çok özel matematiksel işlevler veya belirli bir mimari için optimize edilmiş kod yazmanız gerekmedikçe çoğu programlama dilinde bakım yapmamalısınız ... Sadece türün boyutunun sizin için yeterli olduğundan emin olun (eğer bir Int'den daha büyük bir şey kullanın) örneğin 32 bitten daha fazlasına ihtiyacınız olacağını bilin )



0

Int veya Int32 kullanımı aynıdır Int sadece okuyucu için kodu basitleştirmek için şeker olduğunu.

Nullable varyant Int? veya Int32? null içeren alanlarda veritabanlarıyla çalışırken. Bu sizi birçok çalışma zamanı sorunundan kurtaracaktır.


0

Bazı derleyiciler farklı platformlarda int için farklı boyutlara sahiptir (C # 'a özgü değildir)

Bazı kodlama standartları (MISRA C), kullanılan tüm türlerin boyut belirtilmesini gerektirir (yani int değil Int32).

Farklı tip değişkenleri için önek belirtmek de iyidir (örn. 8 bit bayt için b, 16 bit sözcük için w ve 32 bit uzun sözcük için l => Int32 lMyVariable)

Dikkat etmelisiniz çünkü kodunuzu daha taşınabilir ve daha sürdürülebilir hale getirir.

Her zaman C # kullanacaksanız ve C # belirtimi bu konuda asla değişmeyecekse, taşınabilir C # için geçerli olmayabilir.

Sürdürülebilir ihmo her zaman uygulanabilir olacaktır, çünkü kodunuzu koruyan kişi bu belirli C # spesifikasyonunun farkında olmayabilir ve zaman zaman 2147483647'den fazla olursa, bir hatayı kaçırmayın.

Örneğin yılın aylarını sayan basit bir for-loop'ta, umursamazsınız, ancak değişkeni muhtemelen owerflow'un akabileceği bir bağlamda kullandığınızda, önemsemelisiniz.

Üzerinde biraz akıllıca işlemler yapıp yapmayacağınıza da dikkat etmelisiniz.


Net - int her zaman Int32 ve uzun her zaman Int64
Keith

It is also good to specify prefixes for different type variablesMacarca gösterimi günümüzde büyük ölçüde onaylanmamıştır ve çoğu kodlama stili bunun kullanımını caydırır. Yazılım şirketlerinin iç sözleşmeleri de genellikle bu gösterimi yasaklamaktadır
phuclv

0

Türün kullanılması, Int32bir ad alanı başvurusu Systemveya tam niteleme ( System.Int32) gerektirir. intBir isim alanı ithalatı gerektirmediğinden, bazı durumlarda ad alanı çarpışma olasılığını azaltacağım için eğilimliyim . IL'ye derlendiğinde ikisi arasında bir fark yoktur.


0

Visual Studio 2012 Int32'deki Anlık Pencereye göre int, Int64 uzun. İşte çıktı:

sizeof(int)
4
sizeof(Int32)
4
sizeof(Int64)
8
Int32
int
    base {System.ValueType}: System.ValueType
    MaxValue: 2147483647
    MinValue: -2147483648
Int64
long
    base {System.ValueType}: System.ValueType
    MaxValue: 9223372036854775807
    MinValue: -9223372036854775808
int
int
    base {System.ValueType}: System.ValueType
    MaxValue: 2147483647
    MinValue: -2147483648

0

Ayrıca Int16'yı da düşünün. Bir Tamsayıyı uygulamanızda bellekte saklamanız gerekiyorsa ve kullanılan bellek miktarı konusunda endişeleriniz varsa, daha az memeory kullandığından ve Int32'den daha küçük bir min / maks aralığına sahip olduğu için Int16 ile gidebilirsiniz (int .)


0

Bir süre önce Microsoft .NET CLR ürün ekibinden birisini ziyaret ettiğimizde Microsoft ile bir proje üzerinde çalışıyordum. Bu kişi örnekleri kodladı ve değişkenlerini tanımladığında “Int32” ile “int” ve “String” ile “string” i kullandı.

Microsoft'un diğer örnek kodlarında bu stili gördüğümü hatırlamıştım. Bu yüzden biraz araştırma yaptım ve herkesin sözdizimi renklendirmesi dışında “Int32” ve “int” arasında fark olmadığını söyledi. Aslında, kodunuzu daha okunaklı hale getirmek için “Int32” kullanmanızı öneren birçok malzeme buldum. Bu yüzden stili benimsedim.

Geçen gün bir fark buldum! Derleyici "Int32" kullanarak enum yazmanıza izin vermez, ancak "int" kullandığınızda bunu yapar. Bana nedenini sorma çünkü henüz bilmiyorum.

Misal:

public  enum MyEnum : Int32
{
    AEnum = 0
}

Bu çalışıyor.

public enum MyEnum : int
{
    AEnum = 0
}

Alındığı kaynak: Int32 notation vs. int

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.