Temel Dil
Veri Tipleri
İlkel, koleksiyon ve nullable tipler.
US'ta her değişkenin tipi zorunludur. İlkel tipler, nullable biçimler ve koleksiyon tipleri programın veri modelini oluşturur.
Bu sayfa her tipi ayrı ayrı açıklar: ne tuttuğu, nasıl yazıldığı, dönüşüm kuralları ve dikkat edilecek sınırlar language-spec ile uyumludur.
Sayısal tip seçimi
Adlar yanıltıcı olabilir; saklama biçimi runtime-design tablosuna göredir:
| US tipi | Ne tutar | Davranış | Tipik kullanım |
|---|---|---|---|
tamsayı | İşaretli 32 bit tam sayı | Bölme sıfıra doğru kesilir | Sayaç, yaş, indis |
utamsayı | İşaretsiz 32 bit tam sayı | Negatif yok; tamsayı ile örtük dönüşüm yok | Yalnız ≥ 0 aralık |
ondalık | 64 bit kayan nokta (double) | Adı ondalık tabanı çağrıştırır; saklama IEEE double | Genel kesirli ölçü |
gondalık | 32 bit kayan nokta (float) | ondalık'tan daha dar | Dar kayan nokta yeterliyse |
hondalık | Yüksek duyarlıklı ondalık (decimal) | Para/kesin oran; double'a düşülmez | Tutar, kesin ondalık |
ondalık mı, gondalık mı, hondalık mı? Çoğu kesirli hesapta ondalık; dar float gerektiğinde gondalık; kayan nokta hatası kabul edilemezse hondalık.
Tip seçimi
Metin için metin, sayım için tamsayı, bayrak için mantıksal, gün için tarih, gün içi saat için saat, olay anı için tarihsaat, gecikme için süre kullanın. Koleksiyonlarda varsayılan çoğu zaman liste<T>; sabit boyutta dizi, tekilde küme, anahtar-değerde sözlük, ekleme sırası vurgusunda sliste.
Nullable
T? boş alabilir. ~ yalnız nullable konuma atanır. T → T? örtük, T? → T örtük değildir. Ayrıntılar: Null ve Nullable.
İlgili konular
Literaller · Null ve Nullable · Operatörler · Tarih ve Zaman
Referans
Bu sayfa 15 katalog öğesini kapsar. Aşağıdaki maddeler language-spec, örnekler ve katalog alanlarından üretilmiştir.
metin
Nedir?
metin, Unicode karakter dizilerini tutan ilkel tiptir. Kullanıcı girdileri, dosya içeriği, JSON gövdesi ve enterpolasyonlu çıktı için kullanılır. Boş metin ("") ile boş değer (~) aynı değildir.
Ne zaman kullanılır?
Serbest biçimli yazı, enterpolasyon veya metin üye çağrıları gerektiğinde kullanın.
Değerler, işlemler ve dönüşümler
Bildirim: ad: metin = "İbrahim". Literaller çift tırnaklıdır; kaçış ", \, \n, \r, \t. Enterpolasyon "Merhaba {ad}"; {{ ve }} kaçışı tek süslü üretir. Üyeler: kırp, büyük, küçük, içerir, başlar, biter, değiştir, böl, birleştir. büyük/küçük tr-TR kullanır. Sayısal ↔ metin örtük değildir. Nullable: metin?; ~ yalnız nullable konuma (US0810).
Tanımlama
ad: metin = "İbrahim"syaz "Merhaba {ad}"Örnek
ad: metin = "İbrahim"syaz "Merhaba {ad}"Çıktı
Merhaba İbrahim
Geçersiz örnek
ad: metin = ~US0810 — ~ yalnız nullable (metin?) konuma atanır.
Dikkat edilmesi gerekenler
- Boş metin "" ile ~ aynı değildir.
- Sayısal metin dönüşümü örtük değildir.
- CLR karşılığı: System.String (runtime-design)
İlgili konular
Literaller · Metin İşlemleri · Null ve Nullable
karakter
Nedir?
karakter tek bir Unicode karakter değerini tutar. Metin dizisi değil, tek kod birimidir. Literali tek tırnak içindedir.
Ne zaman kullanılır?
Tek harf, ayırıcı veya karakter karşılaştırması gerektiğinde kullanın.
Değerler, işlemler ve dönüşümler
Bildirim: harf: karakter = 'A'. Literal: 'ç'. metin ile örtük dönüşüm yoktur. Nullable: karakter?; ~ yalnız ? konumda.
Tanımlama
harf: karakter = 'A'Örnek
harf: karakter = 'A'syaz harfÇıktı
A
Dikkat edilmesi gerekenler
- Metin ile karakter örtük dönüşmez.
- CLR karşılığı: System.Char (runtime-design)
İlgili konular
tamsayı
Nedir?
tamsayı işaretli 32 bit tam sayıdır. Sayaç, yaş, indis ve çoğu aritmetik için varsayılan tam sayı tipidir. Bölme ve kalan sıfıra doğru kesilir.
Ne zaman kullanılır?
Negatif olabilen veya genel sayısal sayım gerektiğinde tercih edin.
Değerler, işlemler ve dönüşümler
Bildirim: yaş: tamsayı = 38. Literal: 38, 0 (ondalık taban). Operatörler: + - * / % ve karşılaştırmalar. tamsayı → ondalık/gondalık/hondalık örtük genişletmedir; tamsayı ↔ utamsayı örtük değildir; daraltma örtük değildir. Nullable: tamsayı?.
Tanımlama
yaş: tamsayı = 38Örnek
yaş: tamsayı = 38syaz yaşÇıktı
38
Dikkat edilmesi gerekenler
- utamsayı ile örtük dönüşüm yoktur.
- Tamsayı bölmesi sıfıra doğru kesilir; sıfıra bölme US1502.
- CLR karşılığı: System.Int32 (runtime-design)
İlgili konular
utamsayı
Nedir?
utamsayı işaretsiz 32 bit tam sayıdır; negatif değer taşımaz. tamsayı ile aynı aritmetik ailesindedir ama örtük dönüşüm yoktur.
Ne zaman kullanılır?
Yalnız sıfır ve pozitif aralık anlamlıysa kullanın.
Değerler, işlemler ve dönüşümler
Bildirim: adet: utamsayı = 10. utamsayı → ondalık örtük genişletmedir. tamsayı ↔ utamsayı örtük değildir. Daraltma örtük değildir. Nullable: utamsayı?.
Tanımlama
adet: utamsayı = 10Örnek
adet: utamsayı = 10syaz adetÇıktı
10
Dikkat edilmesi gerekenler
- tamsayı ile örtük dönüşüm yoktur.
- CLR karşılığı: System.UInt32 (runtime-design)
İlgili konular
ondalık
Nedir?
ondalık 64 bit kayan nokta sayıdır. Adı ondalık tabanı çağrıştırır; saklama biçimi IEEE double'dır. Kaynak biçimi kültürden bağımsızdır (1.5 her makinede aynıdır).
Ne zaman kullanılır?
Kesirli ölçü, ortalama veya genel kayan nokta hesabında kullanın.
Değerler, işlemler ve dönüşümler
Bildirim: oran: ondalık = 3.14. Gerçek sayı literali: 1.5. tamsayı ve utamsayı → ondalık örtük genişletmedir. Daraltma ve metin ↔ sayı örtük değildir. Yüksek duyarlık için hondalık. Nullable: ondalık?.
Tanımlama
oran: ondalık = 3.14Örnek
oran: ondalık = 3.14syaz oranÇıktı
3.14
Dikkat edilmesi gerekenler
- Yüksek duyarlık ihtiyacında hondalık kullanın.
- Sayı önce başka kayan noktaya çevrilip yazılmaz (JSON dahil).
- CLR karşılığı: System.Double (runtime-design)
İlgili konular
gondalık
Nedir?
gondalık 32 bit kayan nokta tipidir. ondalık'tan daha dar aralık ve duyarlık sunar. tamsayı → gondalık örtük genişletmedir.
Ne zaman kullanılır?
32 bit kayan nokta yeterli olduğunda veya hedeflenen API bunu istediğinde kullanın.
Değerler, işlemler ve dönüşümler
Bildirim: x: gondalık = 1.5. Gerçek sayı literali hedef tip ile gondalık olur. tamsayı → gondalık örtük; daraltma örtük değil. Nullable: gondalık?.
Tanımlama
x: gondalık = 1.5Örnek
x: gondalık = 1.5syaz xÇıktı
1.5
Dikkat edilmesi gerekenler
- Genel kesirli hesapta çoğu zaman ondalık tercih edilir.
- CLR karşılığı: System.Single (runtime-design)
İlgili konular
hondalık
Nedir?
hondalık yüksek duyarlıklı ondalık tipidir. Para ve kesin ondalık aritmetik için ondalık/gondalık yerine kullanılır. tamsayı → hondalık örtük genişletmedir.
Ne zaman kullanılır?
Kayan nokta hatasının kabul edilemediği tutar ve oranlarda kullanın.
Değerler, işlemler ve dönüşümler
Bildirim: tutar: hondalık = 10.25. JSON/sayı okumada hedef tip hondalık ise önce double'a düşülmez. Daraltma örtük değildir. Nullable: hondalık?.
Tanımlama
tutar: hondalık = 10.25Örnek
tutar: hondalık = 10.25syaz tutarÇıktı
10.25
Dikkat edilmesi gerekenler
- ondalık (double) ile karıştırmayın; yüksek duyarlık hondalık'tadır.
- CLR karşılığı: System.Decimal (runtime-design)
İlgili konular
mantıksal
Nedir?
mantıksal doğru veya yanlış değerlerini tutar. eğer, döngü ve yüklem koşulları yalnız bu tipi kabul eder; JS tarzı truthiness yoktur.
Ne zaman kullanılır?
Bayraklar ve eğer/tekrarla/sorgu yüklemlerinde kullanın.
Değerler, işlemler ve dönüşümler
Bildirim: aktif: mantıksal = doğru. Literaller: doğru, yanlış. Operatörler: && || ! ve karşılaştırmalar. Koşul ifadesi mantıksal değilse US0812. Nullable: mantıksal?.
Tanımlama
aktif: mantıksal = doğrueğer aktif{ syaz "Açık"}Örnek
aktif: mantıksal = doğrueğer aktif{ syaz "Açık"}Çıktı
Açık
Geçersiz örnek
eğer "metin"{ syaz "x"}US0812 — koşul mantıksal olmalıdır; metin/sayı truthy sayılmaz.
Dikkat edilmesi gerekenler
- Koşullar yalnız mantıksal ister (US0812); 0, "" veya nesne koşul olamaz.
- ~ yalnız mantıksal? konumuna atanır (US0810).
- CLR karşılığı: System.Boolean (runtime-design)
İlgili konular
Literaller · Operatörler · Koşullar · Null ve Nullable
nesne
Nedir?
nesne kök referans tipidir. Model ve sınıf örnekleri örtük olarak nesne'ye yükseltilebilir. Somut alanları bilinen bir tip yerine genel bir referans tutar; dinamik gibi üye çözümünü ertelemez.
Ne zaman kullanılır?
Genel referans gerektiğinde; mümkünse somut model/sınıf tercih edin. Çalışma zamanı üye çözümü için dinamik kullanmayın — nesne değildir.
Değerler, işlemler ve dönüşümler
Bildirim hedef tipi nesne olabilir; kaynak NullTypeSymbol değilse örtük dönüşüm vardır. Üye erişimi bağlama anında somut tipte çözülür; nesne üzerinden bilinen üye yoksa tanı hatasıdır. Nullable: nesne?.
Tanımlama
değer: nesne = @Kullanıcı { ad = "Ali" }Örnek
model Kullanıcı { ad: metin }değer: nesne = @Kullanıcı { ad = "Ali" }syaz "ok"Çıktı
ok
Dikkat edilmesi gerekenler
- Mümkünse somut tip kullanın; nesne tip denetimini zayıflatır ama dinamik kadar ertelemez.
- nesne ≠ dinamik: üye erişimi bağlama zamanındadır.
İlgili konular
dinamik
Nedir?
dinamik, üye erişimini ve çağrıları çalışma zamanında çözen tiptir. Tip denetimini zayıflatır; standart kodda tercih edilmez. Her tip örtük olarak dinamik'e dönüşebilir. nesne ise kök referanstır; üye çözümünü ertelemez.
Ne zaman kullanılır?
Yalnız bağlama anında tipi bilinmeyen köprü senaryolarında; aksi halde kaçının. Genel referans için nesne, somut tip için model/sınıf tercih edin.
Değerler, işlemler ve dönüşümler
Bildirim: x: dinamik = .... Üye ve çağrı sonuç tipi dinamik kalır; olmayan üye çalışma zamanı US15xx hatasıdır. Jenerik çıkarım başarısızsa örtük dinamik'e düşülmez. Derleyici yüzeyi PARTIAL olabilir; yorumlayıcıda davranış tanımlıdır.
Tanımlama
x: dinamik = 42Örnek
x: dinamik = 42syaz xÇıktı
42
Dikkat edilmesi gerekenler
- Başarısız üye erişimi çalışma zamanı hatasıdır (US15xx).
- Standart kodda tercih edilmez.
- dinamik ≠ nesne: üye erişimi çalışma zamanında çözülür.
İlgili konular
İlkel tip kümesi
Nedir?
US ilkel tipleri: metin, karakter, tamsayı (32 bit işaretli), utamsayı (32 bit işaretsiz), ondalık/gondalık/hondalık, mantıksal, nesne, dinamik, tarih, saat, tarihsaat, süre. Bildirimde tip açık yazılır.
Ne zaman kullanılır?
Değişken, parametre veya alan tipini seçerken bu kümeden yararlanın.
Sözdizimi
yaş: tamsayı = 38oran: ondalık = 1.5aktif: mantıksal = doğruBasit örnek
yaş: tamsayı = 38oran: ondalık = 1.5Dikkat edilmesi gerekenler
tamsayı↔utamsayıörtük değil; daraltma örtük değil.
İlgili konular
Nullable
Nedir?
T? boş alabilirlik. ~ yalnız nullable konuma gider.
Basit örnek
ad: metin? = ~syaz ad ?? "Misafir"Çıktı
Misafir
Dikkat edilmesi gerekenler
- Nullable’a düz
.→ US0811.
İlgili konular
Jenerik koleksiyon tipleri
Nedir?
Standart koleksiyon yazımları liste<T>, dizi<T>, sözlük<K,V>, küme<T> ve sliste<T> biçimindedir. Öğe tipi köşeli parantez içinde verilir.
Ne zaman kullanılır?
Sıralı, sabit uzunluklu, anahtarlı veya yinelenmeyen koleksiyon gerektiğinde kullanın.
Sözdizimi
isimler: liste<metin> = ["Ali"]boş: sözlük<metin, tamsayı> = []Basit örnek
isimler: liste<metin> = ["Ali"]Dikkat edilmesi gerekenler
- Arity US0848; yanlış üye adı US0854.
İlgili konular
Liste · Dizi, Küme, Sözlük, sliste
Dönüşüm kuralları
Nedir?
Örtük tip dönüşüm kuralları language-spec §4.4 ile sabittir. Aynı tip kimlik dönüşümüdür. tamsayı → ondalık/gondalık/hondalık ve utamsayı → ondalık genişletmedir. tamsayı↔utamsayı örtük değildir; daraltma örtük değildir. T→T? örtük, T?→T örtük değildir. Sayısal↔metin örtük değildir. Bu madde dönüşüm eşleme bildirimi değildir.
US bunu nasıl denetler?
Atama ve başlatıcıda hedef tipe örtük geçiş yoksa bağlayıcı tanı üretir: başlatıcı uyumsuzluğunda US1021, atamada US0809. dinamik ve (null olmayan) nesne hedefi ile kalıtım ilişkisi örtük kabul edilebilir.
Geçerli örnek
değer: tamsayı = 1a: ondalık = değersyaz "{a}"Çıktı
1
Geçersiz örnek
yaş: tamsayı = "38"US1021 — InitializerMismatch; sayısal metin dönüşümü örtük değildir.
Dikkat edilmesi gerekenler
yaş: tamsayı = "38"örtük metin→sayı değildir → US1021.utamsayıdeğeritamsayıdeğişkene atanamaz → US0809.~yalnız nullable hedefe gider; nullable olmayan hedefte US0810.- Açık model eşlemesi ayrı özelliktir (
dönüşüm/dönüştür\<T\>()).
İlgili konular
Null ve Nullable · Değişkenler
'dinamik'
Nedir?
dinamik runtime üye çözümü yapar; tip denetimini zayıflatır. Standart kodda tercih edilmez. Çıkarım başarısızsa örtük dinamik’e düşülmez.
Sözdizimi
x: dinamikDikkat edilmesi gerekenler
- Çıkarım başarısız → US0829.
- Sample’da az kullanım; tip adı §4.1’de normative.