Aracılığıyla paylaş


Türleri (C# Programlama Kılavuzu)

Türleri, değişkenler ve değerleri

C# türü kesin olarak belirtilmiş bir dil olur.Bir değere değerlendirilen her deyimin yaptığı gibi tüm değişken ve sabit bir türü vardır.Her yöntem imzası her giriş parametresi ve dönüş değeri bir türünü belirtir..net Framework sınıf kitaplığı yerleşik sayısal türler yanı sıra çok çeşitli dosya sistemi, ağ bağlantıları, topluluklar ve Diziler nesnelerinin ve tarihler gibi mantıksal yapıları temsil eden daha karmaþýk türler kümesini tanımlar.Sınıf kitaplığı türlerinin yanı sıra programın sorunu etki alanına özgü kavramları model kullanıcı tanımlı türler tipik bir C# programı kullanır.

Bir tür depolanan bilgiler aşağıdakileri içerebilir:

  • Türünde bir değişken gerektirir depolama alanı.

  • Temsil edebilir maksimum ve minimum değerler.

  • İçerdiği üyeler (yöntemleri, alanlar, olayları vb.).

  • Devralındığı taban türü.

  • Burada çalıştırma süresinde değişkenler için bellek tahsis konumu.

  • İzin verilen işlemleri tür.

Derleyici kodunuzda gerçekleştirilen tüm işlemler olduğundan emin olmak için tür bilgilerini kullanır türü güvenli.Örneğin, türünde bir değişken bildirmek int, derleyici, ayrıca bir değişken kullanın ve çıkarma işlemlerini sağlar.Bu değişken türü aynı işlemleri gerçekleştirmek deneyin bool, aşağıdaki örnekte gösterildiği gibi derleyici bir hata oluşturur:

int a = 5;             
int b = a + 2; //OK

bool test = true;

// Error. Operator '+' cannot be applied to operands of type 'int' and 'bool'.
int c = a + test;

[!NOT]

C ve C++ geliştiricileri, fark C# bool için dönüştürülebilir değil int.

Derleyici yürütülebilir dosya meta verileri olarak türü bilgileri gömer.Ortak dil çalışma zamanı (clr) ayırır ve bellek biçimiyleilgili daha fazla tür güvenliği güvence altına almak için çalışma zamanında bu meta verileri kullanır.

ms173104.collapse_all(tr-tr,VS.110).gifDeğişken bildirimleri içinde türlerini belirtme

Ne zaman bir değişkeni bildirdiğinizde veya sabit bir programda türünü belirtin veya kullanmak var türü gerçekleştirip derleyici bildirmek için anahtar sözcük.Aşağıdaki örnek, hem yerleşik sayısal türler hem de kullanıcı tanımlı karmaşık türler kullanan bazı değişken bildirimi gösterir:

// Declaration only:
float temperature;
string name;
MyClass myClass;

// Declaration with initializers (four examples):
char firstLetter = 'C';
var limit = 3;
int[] source = { 0, 1, 2, 3, 4, 5 };
var query = from item in source
            where item <= limit
            select item;

Yöntem parametreleri ve dönüş değerlerinin türlerini yöntem imzasında belirtilir.Aşağıdaki imzası gerektiren bir yöntemi gösterir bir int bağımsız değişken olarak bir giriş ve bir dize döndürür:

public string GetName(int ID)
{
    if (ID < names.Length)
        return names[ID];
    else
        return String.Empty;
}
private string[] names = { "Spencer", "Sally", "Doug" };

Bir değişken bildirildikten sonra yeni bir türü re-declared olamaz ve bildirilen türü ile uyumlu olmayan bir değer atanamaz.Örneğin, bildiremezsiniz bir int ve bir Boolean değeri atamak doğru.Ancak, değerleri, örneğin yeni değişkenlere atanan veya yöntemine argüman olarak iletilen diğer türlerine dönüştürülebilir.A türü dönüştürme neden veri kaybı otomatik olarak derleyici tarafından gerçekleştirileceği o yapar.Veri kaybına neden olabilecek bir dönüştürme gerektiren bir cast kaynak kodunda.

Daha fazla bilgi için bkz. Çevrim ve Tür Dönüşümleri (C# Programlama Kılavuzu).

Yerleşik türleri

C# standart bir tamsayı, kayan nokta değerleri, Boolean deyimlerini, metin karakter, ondalık değerleri temsil etmek için yerleşik sayısal türler ve diğer veri türleri kümesi sağlar.Ayrıca vardır yerleşik string ve object türleri.Bunlar, herhangi bir C# programı kullanmanız için kullanılabilir.Yerleşik türleri hakkında daha fazla bilgi için bkz: Başvuru tabloları türleri (C# Reference).

Özel türler

Kullandığınız struct, sınıfı, arabirimi, ve enum yapıları kendi özel türler oluşturmak için..net Framework sınıf kitaplığı kendisi, kendi uygulamalarınızı kullanabileceğiniz Microsoft tarafından sağlanan özel türler koleksiyonudur.Varsayılan olarak, herhangi bir C# programı Sınıf Kitaplığı'nda en sık kullanılan türleri kullanılabilir.Yalnızca açıkça tanımlanmış olan derlemesine proje başvurusu eklediğinizde diğerleri kullanılabilir hale gelir.Derleyici derleme başvurusu edindikten sonra değişkenlerin (ve sabitler) türü kaynak kodunda bu derlemede bildirilen bildirebilirsiniz.Daha fazla bilgi için bkz: .net Framework sınıf kitaplığı.

Ortak tür sistemini

İki temel nokta türü sistemi hakkında bilmek önemlidir .NET Framework:

  • Onu ilkesine devralma destekler.Olarak adlandırılan diğer türlerinden türler türetmek temel türleri.Türetilmiş bir tür yöntemleri, özellikleri ve diğer üyeleri temel türün (ile bazı kısıtlamalarla) devralır.Temel tür türünden türetilmiş bir tür durumda her iki temel türleri, Devralma hiyerarşisinde üyelerinin miras alır bazı diğer, sırayla türer.Yerleşik sayısal türler gibi de dahil olmak üzere tüm türleri System.Int32 (C# anahtar sözcük: int), türetmek sonuçta tek temel türünden olduğu System.Object (C# anahtar sözcük: nesne).Bu birleşik türü hiyerarşisi adlı Ortak tür sistemi (cts).C# [NULL]'ta devralma hakkında daha fazla bilgi için bkz: Kalıtım (C# Programlama Kılavuzu).

  • cts her türde olarak tanımlanan bir değer türü veya bir Başvuru türü.Bu, tüm özel türlerini içerir.net Framework sınıf kitaplığı ve ayrıca kendi kullanıcı tanımlı türler.Kullanarak tanımladığınız türleri struct anahtar sözcük olduğundan değer türleri; tüm yerleşik sayısal türler structs.Kullanarak tanımladığınız türleri sınıfı anahtar sözcüğü olan başvuru türleri.Başvuru türü ve değer türleri farklı derleme zamanı kurallar ve farklı çalışma zamanı davranışı vardır.

Aşağıdaki resimde cts değer türleri ile başvuru türleri arasındaki ilişkiyi gösterir.

Değer türleri ve cts türleri başvuru

Değer türleri ile başvuru türleri

[!NOT]

En yaygın olarak kullanılan türleri tüm düzenlenir olduğunu görmek System ad.Ancak, bir değer olup hiçbir ilişki türü bulunur ad alanına sahip türü ya da baþvuru türü.

ms173104.collapse_all(tr-tr,VS.110).gifDeğer türleri

Değer türler türetmek System.ValueType, hangi türeyen System.Object.Öğesinden türetilmeli türleri System.ValueType clr özel davranışına sahip.Değer türü değişkenleri doğrudan değerlerine, yani satır içi değişkeni hangi bağlamda bellek tahsis edilen içerir.Ayrı yığın ayırma veya değer türündeki değişkenler için çöp toplama yükü yoktur.

Değer türleri iki kategoriye ayrılır: struct ve enum.

Yerleşik sayısal türler geçerlidir ve sahip oldukları özellikler ve yöntemler, erişebilirsiniz:

// Static method on type Byte.
byte b = Byte.MaxValue;

Ancak bildirmek ve basit toplu olmayan türler yokmuş gibi değerler atayabilirsiniz:

byte num = 0xA;
int i = 5;
char c = 'Z';

Değer türleri mühürlenmiş, yani, örneğin, bir türünden türetilemez System.Int32, ve bir yapının yalnızca gelen devralabilir çünkü herhangi bir kullanıcı tanımlı sınıf ya da yapı devralmak için bir yapı tanımlayamazsınız System.ValueType.Ancak, bir yapı, bir veya daha çok arabirimler uygulayabilirsiniz.Bir yapı türü bir arabirim türüne çevirebilirsiniz; Bu neden bir kutulama yönetilen öbek üzerinde bir başvuru türü nesne içinde yapı sarma işlemi.Kutulama işlemleri, bir değer türü götüren bir yönteme karşılaşılıyor bir System.Object parametresi olarak aktarır.Daha fazla bilgi için bkz. Boxing ve kutulamayý kaldýrmayý (c Programlama Kılavuzu #).

Kullandığınız struct kendi özel değer türleri oluşturmak için anahtar sözcük.Genellikle, bir yapı kapsayıcısı olarak küçük bir ilgili değişkenleri kümesi için aşağıdaki örnekte gösterildiği gibi kullanılır:

public struct CoOrds
{
    public int x, y;

    public CoOrds(int p1, int p2)
    {
        x = p1;
        y = p2;
    }
}

Yapılar hakkında daha fazla bilgi için bkz: Yapılar (C# Programlama Kılavuzu).Değer türleri hakkında daha fazla bilgi için .NET Framework, bkz: Ortak tür sistemi.

Değer türleri diğer kategori enum.Bir enum ayrılmaz adlandırılmış sabitler kümesini tanımlar.Örneğin, System.IO.FileMode , numaralandırma.net Framework sınıf kitaplığı nasıl bir dosyanın açılması gerektiğini belirten adlandırılmış sabit tamsayılar içerir.Bunu aşağıdaki örnekte gösterildiği gibi tanýmlanýr:

public enum FileMode
{
    CreateNew = 1,
    Create = 2,
    Open = 3,
    OpenOrCreate = 4,
    Truncate = 5,
    Append = 6,
}

System.IO.FileMode.Create Sabiti 2 değeri vardır.Ancak, ad kaynak kodu okuyan insanlar için çok daha anlamlı ve, nedenden yerine sabit hazır bilgi numaraları numaralandırma kullanmak daha iyi olur.Daha fazla bilgi için bkz. System.IO.FileMode.

Tüm numaralamalar devralmıyor System.Enum, hangi devralan System.ValueType.Yapılar için geçerli olan tüm kuralların numaralamalar için de geçerlidir.Numaralandırmalar hakkında daha fazla bilgi için bkz: Numaralandırma türleri (C# Programlama Kılavuzu).

ms173104.collapse_all(tr-tr,VS.110).gifBaşvuru tipleri

Olarak tanımlanan bir tür bir sınıfı, temsilci, dizi, ya da arabirimi olan bir Başvuru türü.Ne zaman bildirdiğiniz bir başvuru türü bir değişken, çalışma zamanında değişken değeri içeren null açıkça nesnesi örneğini kullanarak oluşturduğunuz kadar Yeni işleci veya başka bir yerde kullanılarak oluşturulmuş bir nesne atamaknew, as shown in the following example:

MyClass mc = new MyClass();
MyClass mc2 = mc;

Bunu uygulayan bir sınıf nesnesi ile birlikte bir arabirim başlatılmalıdır.MyClass Uygulayan IMyInterface, bir kopyasını oluşturmak IMyInterface aşağıdaki örnekte gösterildiği gibi:

IMyInterface iface = new MyClass();

Nesne oluşturulduğunda, yönetilen öbek üzerinde bellek ayrılır ve yalnızca nesnenin konumunu başvuru değişken tutar.Yönetilen öbekte türlerinde ayrıldıkları zaman hem otomatik bellek yönetimi işlevi olarak bilinen CLR tarafından iadesi istenen zaman ek yük gerektirir çöp toplama.Ancak, çöp toplama de son derece optimize edilmiştir ve çoğu durumda, bir performans sorunu oluşturmaz.Çöp toplama hakkında daha fazla bilgi için bkz: Otomatik bellek yönetimi.

Öğelerini değer türleri bile tüm diziler baþvuru türleridir.Diziler örtülü olarak türetmek System.Array sınıfı, ancak bildirmek ve aşağıdaki örnekte gösterildiği gibi C# tarafından sağlanan Basitleştirilmiş sözdizimini kullanabilirsiniz:

// Declare and initialize an array of integers.
int[] nums = { 1, 2, 3, 4, 5 };

// Access an instance property of System.Array.
int len = nums.Length;

Baþvuru türleri, devralma tam olarak destekler.Bir sınıf oluşturduğunuzda, başka bir arabirim veya olarak tanımlanmamış sınıf devralabilir mühürlenmiş, ve diğer sınıfların kendi sınıfından miras ve sanal yöntemleriniz geçersiz kılar.Kendi sınıflarınızı oluşturma hakkında daha fazla bilgi için bkz: Sınıflar ve yapılar (C# Programlama Kılavuzu).Devralma ve sanal yöntemleri hakkında daha fazla bilgi için bkz: Kalıtım (C# Programlama Kılavuzu).

Hazır bilgi değerleri türleri

C# [NULL]'ta derleyici bir tür hazır bilgi değerleri alırsınız.Bir harf numarası sonuna ekleyerek bir sayısal hazır bilgi nasıl yazılmalıdır belirtebilirsiniz.Örneğin, değer 4.56 float ele alınması gerektiğini belirtmek için "f" veya "f" numarasından sonra sonuna: 4.56f.Hiçbir harf eklenir, derleyici sabit yazısında gerçekleştirip.Başvuru sayfaları tek tek türlerin hangi tipleri belirtilebilir harf öneklerle daha fazla bilgi için bkz: Değer türleri (C# Reference).

Çünkü değişmezleri yazılıp yazılmadığını ve sonuçta tüm türler türetmek dan System.Object, yazın ve aşağıdaki gibi bir kod derleme:

string s = "The answer is " + 5.ToString();
// Outputs: "The answer is 5"
Console.WriteLine(s);

Type type = 12345.GetType();
// Outputs: "System.Int32"
Console.WriteLine(type);

Genel türler

Bir veya daha fazla bir tür bildirilebilir Tür parametreleri gerçek türü için yer tutucu olarak hizmet ( beton türü) türünde bir örnek oluşturduğunda, istemci kodu sağlayacaktır.Bu gibi türler olarak Genel türler.Örneğin,.net Framework türü System.Collections.Generic.List<T> , kuralı tarafından adı verilen bir tür parametresi sahip t.Türünün bir örneği oluşturduğunuzda, liste, örneğin, dize içerir nesnelerin türünü belirtin:

List<string> strings = new List<string>();

Tür parametresinin kullanılması aynı sınıfın her öğesine dönüştürmek zorunda kalmadan herhangi bir öğe türünü tutun yeniden olanaklı kılan nesne.Genel koleksiyon sýnýflarýný verilir türü kesin olarak belirtilmiş koleksiyon çünkü derleyici koleksiyon öğeleri belirli türde bilir ve derleme zamanı Eğer bir hatada yükseltebilirsiniz, tamsayı olarak eklemeye çalıştığınız strings önceki örnekteki nesnesi.Daha fazla bilgi için bkz. Generics (C# Programlama Kılavuzu).

Örtülü türleri, anonim türleri ve null yapılabilir türler

Yukarıda belirtildiği gibi dolaylı olarak yerel bir değişken (ancak sınıf üyesi) kullanarak yazabilirsiniz var anahtar sözcüğü.Değişken türü derleme zamanında yine de alır, ancak tipi derleyici tarafından sağlanan.Daha fazla bilgi için bkz. Yerel değişkenler örtülü olarak yazılı (c Programlama Kılavuzu #).

Bazı durumlarda basit depolamak ya da yöntemi sınırları dışında geçirmek istemiyorsanız ilişkili değerler kümesi için adlandırılmış bir tür uyandırmayacağından.Oluşturabileceğiniz Anonim türleri , bu amaç için.Daha fazla bilgi için bkz. Anonim türleri (C# Programlama Kılavuzu).

Normal değer türleri, bir değeri olamaz null.Ancak, affixing tarafından null değer türleri oluşturabilirsiniz bir ? sonra yazın.Örneğin, int? olan bir int değeri de olabilir türü null.cts, Genel yapı türünün örnekleri null türleridir System.Nullable<T>.Nullable türleri içinde sayısal değerler null olabilir veritabanlarından veri geçirdiğinizden özellikle yararlı olur.Daha fazla bilgi için bkz. NULL olabilecek türleri (C# Programlama Kılavuzu).

İlgili Bölümler

Daha ayrıntılı bilgi için aşağıdaki konulara bakın:

C# dil belirtiminin

Daha fazla bilgi için bkz: C# dil belirtiminin. Dil belirtimi, C# sözdizimi ve kullanımı için nihai kaynaktır.

Ayrıca bkz.

Başvuru

Çeşitli dillerde karşılaştırıldığında veri türleri

Tam sayı türleri tablosu (C# Reference)

Kavramlar

C# Programlama Kılavuzu

Conversion of XML Data Types

Diğer Kaynaklar

C# Başvurusu