C Keskin
| C# | ||
|---|---|---|
|
| ||
|
| ||
| Geliştirici(ler) | ||
|
Microsoft https://docs.microsoft.com/en-us/dotnet/csharp/ , https://docs.microsoft.com/de-de/dotnet/csharp/ , https://docs.microsoft.com/ja -jp/dotnet/csharp/ , https://docs.microsoft.com/fr-fr/dotnet/csharp/ ve https://docs.microsoft.com/it-it/dotnet/csharp/ | ||
| Genel bilgi | ||
| Ortak Uzantılar | .cs .csx .cshtml .razor | |
| paradigma | Çoklu paradigma : yapılandırılmış , zorunlu , nesne yönelimli , olaya dayalı , işlevsel , genel , yansıtıcı | |
| Ortaya çıkan | 2000 | |
| Tarafından dizayn edilmiştir | microsoft | |
| En son kararlı sürüm | 10.0 (21 Mart 2022 (6 ay 27 gün)) | |
| Testlerdeki son sürüm | 11.0 | |
| tip sistemi | Statik , Dinamik , Güçlü , Güvenli , Derecelendirilmiş | |
| uygulamalar | Microsoft .NET , Microsoft .NET Core , Mono ve DotGNU | |
| lehçeler | Cω , Spec Sharp, Polifonik C# | |
| tarafından etkilenmiş | Java , C++ , Eyfel , Modula-3 , Pascal | |
| etkiledi | D , F# , Java 5 , Vala | |
| İşletim sistemi | Çoklu platform | |
"C#" ( İngilizcede cii sharp olarak telaffuz edilir), Microsoft şirketi tarafından .NET platformunun bir parçası olarak geliştirilmiş ve standartlaştırılmış , daha sonra ECMA (ECMA-334) ve ISO tarafından standart olarak onaylanan çok paradigmalı bir programlama dilidir ( ISO/IEC23270). C#, Common Language Framework için tasarlanmış programlama dillerinden biridir .
Temel sözdizimi C / C++ 'dan türetilmiştir ve diğer dillerden türetilen iyileştirmeler içermesine rağmen Java'nınkine benzer .NET platform nesne modelini kullanır .
C Sharp ismi , İngilizce'de müzik notaları için keskin olarak okunan ♯ işaretinden esinlenmiştir. Bu bir kelime oyunudur, çünkü "C#" müzikal anlamda "C keskin" anlamına gelir, burada # sembolü bir notanın (bu durumda C, C ile temsil edilir ) bir yarım ton daha yüksek olması gerektiğini belirtir. Bu, C#'ın selefi C++'a göre üstünlüğünün bir metaforudur ve karşılığında C++'a adını vermek için tasarlanmış aynı metafora gönderme yapar. [ 1 ] Ek olarak, # sembolü dört + sembolün birleşimi olarak hayal edilebilir , böylece C dillerinin ilerleme duygusunu devam ettirir.
C#, .NET platformunun bir parçası olmasına rağmen, bir API'dir , C# ise platformun üzerine programlar oluşturmak için tasarlanmış ayrı bir programlama dilidir. Microsoft Windows , Unix , Android , iOS , Windows Phone , Mac OS ve GNU/Linux gibi farklı platformlar için programlar üreten Mono - DotGNU çerçevesini sağlayan gerçekleştirilmiş bir derleyici zaten var .
Tarih
.NET platformunun geliştirilmesi sırasında, sınıf kitaplıkları başlangıçta Simple Managed C (SMC) adı verilen yönetilen bir kod sistemi kullanılarak yazılmıştır. Nisan 1999'da Anders Hejlsberg , yeni bir nesne yönelimli dil geliştirme misyonuyla bir ekip kurdu . Bu ad, marka sorunları nedeniyle C# olarak adlandırılmak zorunda kaldı. [ 2 ] .NET platform sınıf kitaplığı, daha sonra Joseth M.
Hejlsberg, C# geliştirme projesini yönetti. Daha önce Turbo Pascal , Delphi ve J++ gibi diğer dillerin geliştirilmesine de katılmıştı .
Veri türleri
C#, yerleşik veri türlerinin yirmi genel kategorisini içerir : değer türleri ve başvuru türleri . Değer türü terimi , bu türlerin doğrudan kendi değerlerini içerdiğini belirtir. Tamsayıları tanımlamak için türler :
| İnsan | BCL Eşdeğeri | Boyut | Aralık | Anlam |
|---|---|---|---|---|
byte
|
System.Byte
|
8 bit (1 bayt) | 0 - 255 | İşaretsiz tam sayı |
sbyte
|
System.SByte
|
8 bit (1 bayt) | -128 ila 127 | imzalı tam sayı |
short
|
System.Int16
|
16 bit (2 bayt) | -32.768 ila 32.767 | imzalı kısa tam sayı |
ushort
|
System.UInt16
|
16 bit (2 bayt) | 0 ila 65.535 | İşaretsiz kısa tamsayı |
int
|
System.Int32
|
32 bit (4 bayt) | -2.147.483.648 ila 2.147.483.647 | işaretli orta tam sayı |
uint
|
System.UInt32
|
32 bit (4 bayt) | 0 - 4,294,967,295 | işaretsiz orta tam sayı |
long
|
System.Int64
|
64 bit (8 bayt) | -9,223,372,036,854,775,808 ila 9,223,372,036,854,775,807 | imzalı uzun tamsayı |
ulong
|
System.UInt64
|
64 bit (8 bayt) | 0 ila 18,446,744,073,709,551,615 | İşaretsiz uzun tamsayı |
Kayan nokta türleri , sayıları kesirli bileşenlerle temsil edebilir. İki tür kayan nokta türü vardır: float ve double . Double türü, C# sınıf kitaplığındaki birçok matematiksel işlev çift değerler kullandığından en sık kullanılan türdür . Belki de C#'daki en ilginç kayan nokta türü, parasal hesaplamalarda kullanılması amaçlanan ondalıktır . Normal kayan nokta aritmetiği, ondalık değerlere uygulandığında çeşitli yuvarlama hatalarına tabidir. Ondalık tür , bu hataları ortadan kaldırır ve 28 ondalık basamağa kadar temsil edebilir .
| İnsan | BCL Eşdeğeri | Boyut | Aralık | Anlam |
|---|---|---|---|---|
float
|
System.Single
|
32 bit (4 bayt) | ±1.401298E−45 ila ±3.402823E+38 | kısa kayan nokta |
double
|
System.Double
|
64 bit (8 bayt) | ±4.94065645841246E−324 ila ±1.79769313486232E+308 |
uzun kayan nokta |
decimal
|
System.Decimal
|
128 bit (16 bayt) | −7.9228162514264337593543950335 - +7.92281625142643375935439950335 |
Parasal kayan nokta |
C #'daki karakterler , diğer birçok programlama dilinde olduğu gibi 8 bit boyutunda değildir, bunun yerine 16 bit boyutundadır. Bu veri türü çağrılır charve Unicode kodlamasını kullanır . Tamsayı türünden otomatik dönüştürme yoktur char.
| İnsan | BCL Eşdeğeri | Boyut | Aralık | Anlam |
|---|---|---|---|---|
char
|
System.Char
|
16 bit (2 bayt) | '\u0000'a'\uFFFF'
|
tek kodlu karakter |
Mantıksal veri türleri için tamsayı türünden bool.
| İnsan | BCL Eşdeğeri | Boyut | Aralık | Anlam |
|---|---|---|---|---|
bool
|
System.Boolean
|
8 bit (1 bayt) | trueherhangi birifalse
|
Doğru ya da yanlış |
Değişmezler
Bazen 10 yerine 16 tabanlı bir sayı sistemi kullanmak daha kolaydır, bu durumda C# tam sayıları onaltılık0x biçimde belirtmenize izin verir ve örneğin ondalık sayıya0xFF eşdeğer olan 255: önüne eklenerek tanımlanır .
C#, klavyede görsel temsili olmayan sembolleri yazmayı kolaylaştırmak için kaçış dizileri adı verilen karakterlere sahiptir.
C#, C++ gibi bir dize türü tanımlar . Karakter dizisi içinde kaçış dizileri kullanılabilir. Bir karakter dizisi sembolle başlayabilir, @ardından tırnak ( ") içinde bir dize gelebilir, bu durumda kaçış dizilerinin hiçbir etkisi olmaz ve dize iki veya daha fazla satıra yayılabilir.
| tam sayılar | |
|---|---|
| ondalık | 245,[0..9]+
|
| onaltılık | 0xF5,0x[0..9, A..F, a..f]+
|
| uzun tam sayı | 12L
|
| işaretsiz uzun tamsayı | 654UL
|
| kayan nokta | |
| batmadan yüzmek | 23.5F, 23.5f; 1.72E3F, 1.72E3f, 1.72e3F,1.72e3f
|
| çift | 23.5, 23.5D, 23.5d, 1.72E3,1.72E3D
|
| ondalık | 9.95M
|
| karakterler | |
| karakter | 'a', 'Z','\u0231'
|
| Zincirler | |
| Sicim | "Hello, world"; "C:\\Windows\\",@"C:\Windows\"
|
| Kaçış dizileri | |
| Uyarı (zil) | \a
|
| geri tepme | \b
|
| sayfa beslemesi | \f
|
| Yeni hat | \n
|
| Araba dönüşü | \r
|
| yatay sekme | \t
|
| dikey sekme | \v
|
| Hükümsüz | \0
|
| tek alıntı | \'
|
| çift alıntı | \"
|
| ters çubuk | \\
|
Değişkenler
Değişkenler, değerlerle ilişkili tanımlayıcılardır. Depolanacak verilerin türünü ve tanımlayıcısını belirterek bildirilirler.
Bir tanımlayıcı şunları yapabilir:
- La başlamak "_".
- büyük ve küçük Unicode karakterleri içerir (büyük/küçük harfe duyarlı ).
Bir tanımlayıcı şunları yapamaz:
- bir sayı ile başlayın.
- bir anahtar kelimeyle değil, bir sembolle başlayın.
- 511'den fazla karakter içerir.
Bir değişken bildirin:
int myNumber ; // Değişkeni bildiririz, ancak onu herhangi bir değerle başlatmayız.
Bir değişkene değer atamak için, tanımlayıcısı belirtilir, ardından eşittir sembolü ( =) ve saklamasını istediğimiz değer gelir:
myNumber = 5 ; // Oluşturulan değişkene '5' değerini atadık.
Aynı anda bir değer bildirebilir ve atayabilirsiniz:
int myNumber = 5 ; // Değişkeni tanımlıyoruz ve '5' değerini atadık.
Ayrıca , derleyicinin değişkene atanacak veri türünü belirlediği ve parametreler veya veri üyeleri için değil, yalnızca yerel değişkenler için izin verildiği
anahtar sözcük çıkarım mekanizmasını kullanarak, veri türünü belirtmeden bir değişken bildirebilirsiniz .var
var string = "Bu bir string" ;
var sayı1 = 5 ;
var sayı2 = 4,5 ;
var sayı3 = 4.5D ;
var nesne = yeni Nesne ();
var sonuç = Matematik . Pow ( 5 , 2 );
C#'daki değişken türü dönüştürmeleri, satırın kaynak ve sütunun hedef olduğu aşağıdaki tabloda temsil edilmektedir.
| Efsane | |
|---|---|
| Kırmızı | Uyumsuz dönüştürme (I). |
| Yeşil | Otomatik veya örtük dönüştürme (A). |
| Mavi | Açık dönüştürme (E). |
| bayt | sbyte | şort | kısa | int | uint | uzun | uzun | batmadan yüzmek | çift | ondalık | karakter | bool | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| bayt | VE | A | A | A | A | A | A | VE | VE | VE | VE | sen | |
| sbyte | VE | A | VE | A | VE | A | A | VE | VE | VE | VE | sen | |
| şort | VE | VE | VE | A | A | A | A | VE | VE | VE | VE | sen | |
| kısa | VE | VE | VE | A | A | A | A | VE | VE | VE | VE | sen | |
| int | VE | VE | VE | VE | VE | A | A | VE | VE | VE | VE | sen | |
| uint | VE | VE | VE | VE | VE | A | A | VE | VE | VE | VE | sen | |
| uzun | VE | VE | VE | VE | VE | VE | VE | VE | VE | VE | VE | sen | |
| uzun | VE | VE | VE | VE | VE | VE | VE | VE | VE | VE | VE | sen | |
| batmadan yüzmek | VE | VE | VE | VE | VE | VE | VE | VE | A | VE | sen | sen | |
| çift | VE | VE | VE | VE | VE | VE | VE | VE | VE | VE | sen | sen | |
| ondalık | VE | VE | VE | VE | VE | VE | VE | VE | VE | VE | sen | sen | |
| karakter | VE | VE | VE | A | A | A | A | A | A | A | A | sen | |
| bool | sen | sen | sen | sen | sen | sen | sen | sen | sen | sen | sen | sen |
- Herhangi bir örtük dönüştürme, bilgi kaybına, kesilmeye veya yuvarlamaya neden olmaz .
- Açık bir dönüştürmede bilgi kaybı, kesme veya yuvarlama olması (her zaman böyle olmasa da) mümkündür.
- Herhangi bir örtük dönüştürmede, hedef veri türü, kaynak veri türünden daha büyüktür.
- Açık dönüştürme, parantezler arasında dönüştürmek istediğiniz veri türünü ve ardından değeri belirterek yapılır:
uzunluk değeri = 123 ; // Örtük dönüştürme
uzun değeri = ( uzun ) 123 ; // açık dönüştürme
Bir atama içinde gerçekleştirilmeye ek olarak, her işlemde her iki işlenenin de aynı türde olması gerektiğinden, tür dönüştürmeleri de bir ifade içinde gerçekleşir. Dönüştürme örtük türdeyse, bu sırayla aşağıdaki algoritma gerçekleştirilir:
- Bir işlenen ise
decimal, diğer işlenen dönüştürülürdecimal. - Bir işlenen ise
double, diğer işlenen dönüştürülürdouble. - Bir işlenen ise
float, diğer işlenen dönüştürülürfloat. - Bir işlenen ise
ulong, diğer işlenen dönüştürülürulong. - Bir işlenen ise
long, diğer işlenen dönüştürülürlong. - Bir işlenen
uint, ve diğer işlenensbyte,shortveya türündeyseint, her ikisi de 'ye dönüştürülürlong. - Bir işlenen ise
uint, diğer işlenen dönüştürülüruint. - Önceki durumlardan hiçbiri değilse, iki işlenen dönüştürülür
int.
Sabitler
Sabitler değişmez değerlerdir ve bu nedenle değiştirilemezler.
const
Anahtar kelime ile bir sabit bildirildiğinde const, değer de atanmalıdır. Bundan sonra sabit kilitlenir ve değiştirilemez. Bunlar örtük olarak statiktir ( static).
sabit çift PI = 3.1415 ;
readonly
Farklı olarak const, bildirildiği anda değerin atanmasını gerektirmez. Örneğinin üyeleri veya sınıfın ( static) statik üyeleri olabilirler.
salt okunur çift E ;
E = 2.71828 ;
Operatörler
| Kategori | operatörler |
|---|---|
| aritmetik | + - * / %
|
| mantıklı | ! && ||
|
| bit düzeyinde | & | ^ ~
|
| birleştirme | +
|
| artış, azalma | ++ --
|
| Yer değiştirme | << >>
|
| ilişkisel | == != < > <= >=
|
| Atama | =^= <<= >>= ??=
|
| Üye Erişimi | .
|
| indeksleme | [ ]
|
| Dönüştürmek | ( )
|
| koşullu | ? : ??
|
| nesne oluşturma | new
|
| tür bilgisi | as is sizeof typeof
|
- Aritmetik operatörler, C ve C++ ile aynı şekilde çalışır.
- İlişkisel ve mantıksal işleçlerin sonucu bir tür değeridir
bool. - Kısa devre operatörleri ikinci işleneni yalnızca gerektiğinde değerlendirir.
- Bitsel operatörler
bool,float,doubleveya türlerine uygulanamazdecimal.
Kontrol talimatları
if-else
if ( i == 2 )
{
// ...
}
else if ( i == 3 )
{
// ...
}
else
{
// ...
}
switch
switch ( i )
{
durum 1 :
...
break ;
durum 2 :
durum 3 :
...
ara ;
varsayılan :
...
ara ;
}
for
for ( int i = 0 ; ben < 10 ; ++ ben )
{
// ...
}
while
while ( ben < 10 )
{
// ...
}
do-while
do
{
// ...
} while ( true );
foreach
foreach ( charList'te char c ) { // ... }
- , , , , , , ifadeleri
if-elsetemelforolarak C , C ++ ve Javawhileiledo-whileaynıdır .switchreturnbreakcontinue - İfade
foreach, tıpkı Java'da olduğu gibi, bir dizinin veya koleksiyonun öğeleri arasında dolaşır. Bu döngüde, koleksiyon çaprazlanır ve değişken, her yinelemede söz konusu koleksiyondan bir öğe alır. - İfade
goto, kullanımıyla ilgili tartışmalara rağmen hala C#'da kullanılmaktadır.
Yöntemler
- Her metot bir sınıfın parçası olmalıdır, global metotlar (fonksiyonlar) yoktur.
- Varsayılan olarak, parametreler değere göre iletilir. (Listelerin ve diğer koleksiyonların başvuruya göre değişkenler olduğuna (yığındaki o liste için ayrılan alana başvurular) ve başvurunun değere göre yönteme iletildiğine, ancak liste için ayrılan alanın ortak olduğuna dikkat edin, bu nedenle silerseniz bir öğe onu orijinalden de yapar).
- Değiştirici
ref, parametreleri değer yerine referans olarak iletmeye zorlar ve parametreyi geçmeden önce değişkeni başlatılmaya zorlar. - Değiştirici , parametreyi geçmeden önce değişkeni başlatmak zorunda kalmamanız dışında
outdeğiştiriciye benzer .ref - Bir referans parametresi değiştirildiğinde
refveoutdeğiştirildiğinde, referansın kendisi referansla iletilir. - Değiştirici
params, bir dizi olarak uygulanan değişken sayıda argüman tanımlamak için kullanılır. - Bir metodun en fazla tek bir parametresi
paramsolmalıdır ve bu sonuncusu olmalıdır.
- Bir yöntem, sınıf türleri de dahil olmak üzere herhangi bir veri türünü döndürebilir.
- Diziler C#'ta nesneler olarak uygulandığından, bir yöntem bir dizi de döndürebilir (bu, dizilerin geçerli dönüş türleri olmaması nedeniyle C++'dan farklıdır).
- C#, yöntem aşırı yüklemesini uygular , iki veya daha fazla yöntem, parametreleri farklı olduğu sürece aynı ada sahip olabilir.
- Yöntem
Main, programın başlangıç noktasının atıfta bulunduğu özel bir yöntemdir.
ref
void PassRef ( ref int x )
{
if ( x == 2 )
{
x = 10 ;
}
}
int z = 0 ;
PassRef ( başvuru z );
out
void PassOut ( out int x )
{
x = 2 ;
}
int z ;
PassOut ( z dışarı );
params
int MaxVal ( char c , parametreler int [] sayılar )
{
// ...
}
int a = 1 ;
MaxVal ( 'a' , 23 , 3 , bir , - 12 ); // İlk parametre zorunludur, ardından istediğiniz kadar tamsayı koyabilirsiniz
Sobrecarga de métodos
int Toplam ( int x , int y )
{
dönüş x + y ;
}
int Toplam ( int x , int y , int z )
{
dönüş x + y + z ;
}
int Toplam ( params int [] sayılar )
{
int Toplam = 0 ;
foreach ( int c sayılarla ) Toplam + = c ; Toplamı döndür ; }
Toplam ( 1 , 2 ); // İlk metodu çağıracak.
Toplam ( 1 , 2 , 3 ); // İkinci metodu çağıracak.
Sum ( 1 , 2 , 3 , 4 , 5 , 6 ) // Üçüncü metodu çağırır.
Main
public static void Main ( string [] args )
{
// ...
}
Matrisler
- C#'da diziler nesne olarak uygulanır.
- Dizi indeksleri 0'dan başlar.
- C#, dizileri nesne olarak uyguladığından, her dizinin,
Lengthtahsis edebileceği veya ayırdığı öğe sayısını içeren bir özelliği vardır.
Bir dizi bildirin:
int [] intArray = yeni int [ 5 ];
Bir diziyi bildirin ve başlatın (dizi boyutu atlanabilir):
int [] intArray = yeni int [] { 1 , 2 , 3 , 4 , 5 };
Bir öğeye erişin:
intArray [ 2 ]; // '3' değerini döndürecek
Çok boyutlu bir dizi bildirin:
int [,] intMultiArray = yeni int [ 3 , 2 ]; // 3 satır ve 2 sütun
Çok boyutlu bir dizi bildirin ve başlatın (dizi boyutu atlanabilir):
int [,] intMultiArray = yeni int [,] { { 1 , 2 }, { 3 , 4 }, { 5 , 6 } };
Çok boyutlu bir dizinin bir öğesine erişin:
intMultiArray [ 2 , 0 ]; // '5' değerini döndürecek
Daha fazla bilgi için: Dizi Eğitimi (C# ) .
Sınıflar ve nesneler
- Belirli bir sınıfın nesne değişkeni, nesnenin değerlerini değil, referansını depolar (tıpkı Java gibi)
- Atama operatörü, bir nesnenin değerlerini değil, ona yapılan referansı (tıpkı Java gibi) kopyalar.
- Bir yapıcı, sınıfıyla aynı ada sahiptir ve sözdizimsel olarak bir yönteme benzer.
- Bir yapıcı herhangi bir değer döndürmez (void bile).
- Tıpkı yöntemler gibi, yapıcılar da aşırı yüklenebilir.
- Bir sınıfta bir kurucu belirtilmemişse, tüm değişkenlere değer veya uygun şekilde atanmasından oluşan varsayılan bir
0kurucunullkullanılırfalse. - Bir nesneye herhangi bir değişken tarafından başvuru yapılmadığında, çöp toplayıcı sınıfın yıkıcısını çalıştırır ve kullanılan belleği serbest bırakır.
- Bir nesne kapsam dışına çıktığında bir sınıfın yıkıcısı çağrılmaz.
- Bir program sona ermeden önce tüm yıkıcılar çağrılır.
- Anahtar kelime
this, kullanıldığı aynı nesneye bir referanstır. - Anahtar sözcük
base, içinde kullanıldığı nesnenin (varsayılan olarak Object) üst sınıfına bir başvurudur. - Anahtar kelime
static, bir üyeyi o sınıfın nesnelerinden ziyade bir sınıfa ait kılar. Böyle bir üyeye, sınıfının herhangi bir nesnesi oluşturulmadan önce ve bir nesneye referans olmadan erişilebilir. - Bir yöntemin
staticreferansı yokturthis. - Bir metot
staticsadece diğer metotları çağırabilirstatic. - Bir yöntemin
staticyalnızca verilere doğrudan erişimi olmalıdırstatic. staticBir örnek yerine bir sınıfa uygulanan öznitelikleri başlatmak için bir kurucu kullanılır.- C#, anahtar kelime ile operatörün aşırı yüklenmesine (
+,-,*, vb.) izin veriroperator. - Nesneleri karşılaştırmak (
==,!=,<,>,<=,>=) aynı nesneye atıfta bulunup bulunmadıklarını kontrol eder.
Bir sınıf bildirin:
sınıf Sınıf
{
}
Bir sınıf başlatın (sınıfın bir nesnesini oluşturma veya bir sınıfı başlatma olarak da adlandırılır ):
c Sınıfı = yeni Sınıf ();
Yapıcı (sanki bir yöntemmiş gibi, ancak sınıfının adıyla):
sınıf Sınıf
{
Sınıf ()
{
// ...
}
}
Yıkıcı (öncesinde ' ' sembolü olan bir yöntemmiş gibi ~):
sınıf Sınıf
{
~ Sınıf ()
{
// ...
}
}
this:
sınıf Sınıf
{
int i = 1 ;
Sınıf ()
{
bu . önyükleme (); // Nesnenin 'Start' yöntemini çağıracak
}
void Start ()
{
// ...
}
}
static:
sınıf Sınıf
{
statik int i = 1 ;
}
Sınıf . ben ; // '1' değerini döndürür. Bir nesne oluşturmak gerekli değildir, çünkü 'statik' olduğu için sınıfa aittir.
operator:
class Class
{
static int operatörü +( int x , int y )
{
// '+' operatörünü geçersiz kıl
// ...
}
static int operatörü -( int x , int y )
{
// '-' operatörünü geçersiz kıl
/ / ...
}
static int operatörü int ( byte x )
{
// 'byte' türünden 'int' türüne aşırı yük dönüşümü
// ...
}
}
Nesne Karşılaştırması:
sınıf Sınıf
{
}
Sınıf c1 = yeni Sınıf ();
Sınıf c2 = yeni Sınıf ();
bool b = c1 == c2 ; // İki farklı nesne oldukları için 'false' döndürür
Karakter dizileri
- Karakter dizileri için veri türü
string. - Anahtar sözcük
stringaslındaSystem.String.NET platform sınıfının bir diğer adıdır. - C#'da dizeler nesnelerdir ve bir karakter dizisi değildir; yine de, bir dizgeden dizine göre rastgele bir karakter elde edilebilir (ancak değiştirilemez).
- Dizeler değişmezdir, oluşturulduktan sonra değiştirilemezler, yalnızca tamamen veya kısmen kopyalanabilirler.
- Operatör
==, iki referansın aynı nesneye atıfta bulunup bulunmadığını belirler, ancak operatörün iki tip değişkenle kullanılmasıstring, referanslarının değil, dizelerin içeriğinin eşitliğini test eder. Ancak, ve gibi diğer ilişkisel işleçlerle<referanslar>=karşılaştırılır. - Operatör kullanılarak iki dize birleştirilebilir (birleştirilebilir)
+. - Dizeler ifadelerde kullanılabilir
switch.
Bir karakter dizesi bildirin (sanki o gibi bir veri türünün değişkeniymiş gibi int) double:
string text = "Karakter dizisi" ;
string metin = yeni Sistem . String ( "Karakter dizisi" ); // Yukarıdakine eşdeğer
Bir dizenin uzunluğu:
string text = "Karakter dizisi" ;
int ben = metin . uzunluk ; // '20' döndürecek
İki dizeyi karşılaştırın:
bool b = "metin" == "metin" ; // Her iki dize de "metin" içerdiğinden 'true' değerini döndürür
Dizeleri birleştir:
string text = "Dizi" + " karakter" ; // "karakterler"den önceki boşluğa dikkat edin, eğer koyulmazsa "karakterler"in yanında görünecektir
Sınıf System.Stringve onun bir örneği, stringdizelerle çalışmak için bazı yöntemlere sahiptir, örneğin:
static string Copy(string str): bir kopyasını döndürür str.
string text1 = "abc" ;
string text2 = "xyz" ;
string text2 = Sistem . Dize . Kopyala ( metin1 ); // 'text2' artık "abc" içeriyor
int CompareTo(string str): çağıran dizge dizgeden küçükse sıfırdan küçük, çağıran dizge dizgeden büyükse sıfırdan büyük ve dizgeler eşitse sıfır döndürür.
string metin = "abc" ;
int ben = metin . Karşılaştır ( "abc" ); // '0' döndürecek
int IndexOf(string str): içinde belirtilen alt dizenin ilk eşleşmesinin dizinini strveya hata durumunda -1 döndürür.
string metin = "abcdefabcdef" ;
int ben = metin . IndexOf ( "e" ); // '4'
int j = metin döndürür . IndexOf ( "def" ); // 'd' karakterinin bulunduğu '3' ve ardından 'e' ve 'f' döndürür
int LastIndexOf(string str): içinde belirtilen alt dizenin son eşleşmesinin dizinini strveya hata durumunda -1 döndürür.
string metin = "abcdefabcdef" ;
int ben = metin . LastIndexOf ( "e" ); // '10'
int j = metin döndürür . LastIndexOf ( "def" ); // Son 'd' karakterinin bulunduğu, ardından 'e' ve 'f' gelen '9' değerini döndürür
string ToLower: dizenin bir kopyasını küçük harfle döndürür.
string metin = "ABC" ;
dize metin = metin . Aşağıya (); // "abc" döndürecek
string ToUpper: dizenin bir kopyasını büyük harfle döndürür.
string metin = "abc" ;
dize metin = metin . Üst Üst (); // "ABC" döndürecek
string Substring: başlangıç konumunu ve istenen uzunluğu belirten bir alt dize döndürür.
string text = "Karakter dizisi" ;
dize metin = metin . alt dize ( 10 , 8 ); // "karakter" döndürür
Daha fazla bilgi: String (Class) (System ) .
LINQ (Dil Tümleşik Sorgu)
Dille Tümleşik Sorgu (LINQ), sorgu işlevlerinin C# dilinde (ayrıca Visual Basic'te ve potansiyel olarak başka herhangi bir .NET dilinde) doğrudan entegrasyonundan oluşan bir dizi teknolojinin adıdır. LINQ ile bir sorgu, tıpkı sınıflar, yöntemler, olaylar vb. gibi artık birinci sınıf bir dil yapısıdır.
Sorgu yazan bir programcı için, LINQ'nun en görünür dil yapısı sorgu ifadesidir. Sorgu ifadeleri, C# 3.0'da tanıtılan bildirime dayalı sorgu sözdiziminde yazılır. Sorgu söz dizimini kullanarak, veri kaynaklarında en az kodla karmaşık filtreleme, sıralama ve gruplama işlemlerini bile gerçekleştirebilirsiniz. Aynı temel sorgu ifadesi kalıpları, SQL veritabanlarından, ADO.NET veri kümelerinden, XML belgelerinden ve akışlarından ve .NET koleksiyonlarından verileri sorgulamak ve dönüştürmek için kullanılır.
Aşağıdaki örnek, tam sorgu işlemini gösterir. Tam işlem, bir veri kaynağı oluşturmayı, sorgu ifadesini tanımlamayı ve sorguyu bir foreach ifadesinde yürütmeyi içerir.
class LINQQueryExpressions
{
statik geçersiz Ana ()
{
// Veri kaynağını belirtin.
int [] puanları = yeni int [] { 97 , 92 , 81 , 60 };
// Sorgu ifadesini tanımlayın.
IEnumerable < int > scoreQuery =
puanın > 80'in puanı seçtiği puanlardaki puandan ; _ _ _
// Sorguyu yürütün.
foreach ( int i in scoreQuery )
{
Konsol . ( i + " " ) ; } } } // Çıktı: 97 92 81
https://msdn.microsoft.com/es-es/library/bb397676(v=vs.120).aspx
Örnekler
Temel " Merhaba dünya " örneği:
Sistem kullanarak ;
public class Örnek
{
public static void Main ( string [] args )
{
Konsol . WriteLine ( "Merhaba dünya" );
}
}
Toplama ve birleştirme:
Sistem kullanarak ;
public class Örnek
{
public static void Main ( string [] args )
{
int x = 10 ;
int y = 20 ;
konsol . WriteLine ( "Sonuç: " + ( x + y )); // Ekrana yazdırılacak: "Sonuç: 30"
}
}
Sınıfları, yöntemleri, özellikleri ve aşırı yüklemeyi kullanma:
Sistem kullanarak ;
public class Araba
{
private int numDoors ;
public int NumPuertas
{
get
{
bunu döndür . numDoors ; } ayarla { bunu . numDoors = değer ; // 'değer', özelliğe bir değer atadığınızda, // bu değerle çalışmak için otomatik olarak atanan bir değişkendir. } }
public Car ( int numDoors )
{
bu . numDoors = numDoors ;
}
// Aşırı yük: sınıf herhangi bir parametre belirtmeden başlatılırsa, 'numDoors', '2' değeriyle başlatılır
public Car () : this ( 2 )
{
}
}
public class Örnek
{
public static void Main ( string [] args )
{
Araba arabası = yeni Araba (); // İkinci
araba yapıcısı kullanılır . NumPuertas = 4 ;
konsol . WriteLine ( "Kapı sayısı: " + araba . NumPuertas ); // Ekrana yazdırılacak: "Kapı sayısı: 4"
}
}
Paralel Vektörler veya Diziler Örneği:
Sorun 1:
5 kişinin adını ve yaşlarını yüklemeye izin veren bir program geliştirin. Tüm verilerin klavye yüklemesini yaptıktan sonra reşit olan (18 yaş ve üzeri) kişilerin isimlerini yazdırınız.
Program:
Sistem kullanarak ;
System.Collections.Generic kullanarak ; System.Linq kullanarak ; System.Text kullanarak ;
ad alanı VectorTest10
{
sınıf VectorTest10
{
özel dize [] adlar ;
private int [] yaş ;
public void Load ()
{
isimler = yeni dize [ 5 ];
yaş = yeni int [ 5 ];
for ( int f = 0 ; f < isimler . Uzunluk ; f ++ )
{
Konsol . Yaz ( "Ad girin:" );
isimler [ f ]= Konsol . ReadLine ();
konsol . Yaz ( "Yaş girin:" );
dize hattı ;
satır = Konsol . ReadLine ();
yaşlar [ f ]= int . Ayrıştırma ( satır );
}
}
public void OlderAge ()
{
Konsol . WriteLine ( "Resmi reşit kişiler." );
for ( int f = 0 ; f < isimler . Uzunluk ; f ++)
{
if ( yaşlar [ f ] >= 18 )
{
Konsol . WriteLine ( isimler [ f ]);
}
}
Konsol . OkumaAnahtarı ();
}
static void Main ( string [] args )
{
VectorTest10 pv = new VectorTest10 ();
p.v. _ Yük ();
p.v. _ YaşlıYaş ();
}
}
}
imza : RSRR
Özel ortak kontroller
.NET platformunun sunduğu ortak kontrollerin, geliştiricilerin farklı ihtiyaçlarını karşılamak için özelleştirilebileceği ve/veya düzenlenebileceği unutulmamalıdır. İşlevsel ve görsel görünümü üzerinde tam kontrole sahip olduğunuz bir bileşen yapmak istediğinizde, özel bir kontrol oluşturma kararı verilir; geliştirme için gereksiz işlevleri yüklememe olasılığı ile.
Bu özelliklerin sıklıkla kullanıldığı yaygın durumlar şunlardır:
- Sınırlı işlevselliğe sahip basit kontroller (hareket eklenmiş bir düğme gibi).
- Geliştirme için gereksiz özelliklerin olduğu yerleri kontrol eder (kenar boşlukları olmayan bir düğme).
- Farklı bir düzende aynı işlevselliğin nerede gerekli olduğunu kontrol eder (bir kenarı temsil etmek için çizgi biçimindeki düğmeler).
Derleyiciler ve IDE'ler
Şu anda C# dili için aşağıdaki derleyiciler veya IDE'ler bulunmaktadır:
- Microsoft .NET Framework 2.0 (SDK) , bir C# derleyicisi içerir, ancak bir IDE içermez .
- Microsoft Visual Studio , bu dilin mükemmel IDE'si.
- SharpDevelop , GNU LGPL lisansı altında C# için ücretsiz IDE , Microsoft Visual Studio'ya çok benzer bir arayüze sahip.
- Mono , Novell tarafından geliştirilen tüm .NET ortamının GNU GPL lisanslı bir uygulamasıdır . Bu uygulamanın bir parçası olarak bir C# derleyicisi dahil edilmiştir.
- DotGNU Portable.NET , Özgür Yazılım Vakfı'ndan .
Dil tasarım hedefleri
ECMA-334 standardı, C# için aşağıdaki tasarım hedeflerini listeler:
- Basit, modern, genel amaçlı nesne yönelimli programlama dili.
- Katı veri tipi kontrolü, vektör sınırları kontrolü, başlatılmamış değişkenleri kullanma girişimlerinin tespiti ve otomatik çöp toplama gibi yazılım mühendisliği ilkelerinin dahil edilmesi .
- Dağıtık ortamlarda kullanılabilecek yazılım bileşenleri geliştirebilme .
- Kaynak kodun taşınabilirliği.
- Özellikle C, C++ ve Java'ya aşina olan programcılar için yeni dile kolay programcı geçişi.
- Uluslararasılaşma için destek .
- Her boyutta uygulama yazmak için uygundur: işletim sistemleri gibi en büyük ve en karmaşıktan en küçük işlevlere kadar.
- Bellek ve işleme açısından ekonomik uygulamalar.
Referanslar
- ↑ "Neden C+ yerine C++ deniyordu?" . İngilizce . 10 Şubat 2015 . 12 Haziran 2019'da alındı .
- ↑ Visual C# Developer Center, Visual C# .NET 2003 Hakkında Sıkça Sorulan Sorular
Dış bağlantılar
İspanyolca
Wikibook'lar , C keskin NET'te bir kitap veya kılavuz barındırır .- C# belgeleri
- C# programlama kılavuzu
- C#'da sayısal yöntemler
- Visual C# Geliştirici Merkezi
- İspanyolca konuşan profesyoneller ve/veya öğrenciler için C# Sanal toplulukta Yazılım Geliştirme .
- Programlama blogu, C# (Kapalı)
- Programlama blogu, C# ( Wayback içinde saklanır ).
- Programlama blogu, C# (Kodlar) C# kodları için (Wayback'te saklanır ) .
- Geeks.ms .NET Platformu ve C# Geliştirici Blogları
- Microsoft .NET Framework 2.0 (x86) , (x64) ve (IA64) Yazılım Geliştirme Seti (SDK )
- C# | WebProgramlama Makaleleri, örnekler, kod parçacıkları vb.
İngilizce
- Microsoft ağ çerçevesi
- Standart ECMA-334 ( C# Dil Belirtimi ).
- C# 3.0 belirtimi
- C# Acemi Eğitimi (Kapalı)
- C# Acemi Eğitimi (Wayback) (Wayback'te Barındırılır ) Arapçadır
- C# İzlenecek Yol
- Programcının Cenneti C# Okul Kitabı
Wikimedia Commons , C Sharp için bir medya kategorisine sahiptir .