Son Haberler
Anasayfa / ANALOG DÜNYA / C# Nedir?

C# Nedir?

Anders Heljsberg ve ekibi tarafından 2000 yıllarının başında Microsoft tarafından ECMA ve ISO standartlarına göre geliştirilmeye başlanan C# programlama dili, zamanla kendi standardını oluşturarak tamamen .NET için geliştirmeye başlamıştır. .NET Framework ile birlikte derlenen kodlar “.exe” uzantılı çalıştırılabilir uygulamalara dönüşürler.

Modern algoritması yapısı sayesinde yazılımcıların tercih ettiği popüler programlama dilleri arasında yer alıyor.

“2020’de C# öğrenmeli miyim?”, “C# öğrenirken nasıl yol izlemeliyim?” sorularına yanıt arıyorsanız, Rod the IT Guy” ın C# ile ilgili videolarını izleyerek kendinize yol haritası oluşturabilirsiniz.

Class ve Object nedir?

Nesne yönelimli programlamanın en önemli öğesi olan sınıflar, verileri ve methodları içine alan kod bloğudur. Sınıflar sayesinde kod yapısı parçalara bölünür ve karmaşıklık azalır.
Bir sınıf kendisinde oluşturulacak nesneler için takım üyeler içermelidir.
Bu üyeler; alanlar (fields), metodlar (methods), yapıcılar (constructor), özellikler (properties), olaylar (events), delegeler (delegates) olarak sıralanabilir.

Nesneye yönelik programlamada nesneler, sınıflardan üretilirler ve sınıfların aksine kimlikleri vardır.
Bir nesne kendi hakkında, yapabileceği işlemler ile ilgili bilgiler saklar. Programın gereksinim duyduğu tüm veriler nesneler tarafıdan tutulur.

Managed ve Unmanaged code nedir?

Yönetilen kod kavramı, CLR (Common Language Runtime) tarafından yürütülen bir koddur.
.NET framework tarafından yönetilen ve makine koduna dönüştürülmeden önce ara bir dile çeviren kod bloğududur.

Yönetilmeyen kod, .NET dışındaki herhangi bir framework ile uygulama çalışma zamanı tarafından çalıştırılan herhangi bir koddur.

C# kod derlemesi nasıl çalışır?

C# kod derlemesi dört adımı içerir:

  • Kaynak kodu C# derleyicisi tarafından Managed koda derlenir.
  • Yeni oluşturulan kod derlenirken birleştirilir.
  • CLR yüklenir.
  • CLR tarafından assembly yürütülür.

Temel OOP kavramları nelerdir?

Nesne Tabanlı Programlamanın dört temel kavramı vardır:

  • Encapsulation(Kapsülleme): Bir nesnenin bazı özellik ve işlevleri, başka sınıf ve nesnelerden gizlenir. Veri uygulamasının geri kalanı gizlenirken yalnızca gerekli bilgilere erişilebilir.
  • Abstraction(Soyutlama):  Bir nesnenin kritik davranışını ve verilerini belirleme ve ilgisiz detayları ortadan kaldırma işlemidir.
  • Inheritance(Kalıtım): Başka bir sınıftan yeni sınıflar oluşturma yeteneğidir. Üst sınıftaki nesnelerin davranışına erişilerek, değiştirilerek ve genişletilerek yapılır.
  • Polymorphism(Polimorfizm): İsim, tek isim, birçok form anlamına gelir. Aynı isimde ancak farklı uygulamalara sahip birden fazla yönteme sahip olunması ile elde edilir.

“using” ifadesi nedir?

“using” anahtar sözcüğü, belirli ad alanının program tarafından kullanıldığını gösterir.

Örneğin,  using System

Bu örnekte, System bir ad alanıdır. Konsol sınıfı, Sistem altında tanımlanır ve programımızda console.writeline (“….”) veya readline’ı kullanabiliriz.

Regular expressions ifadesi nedir?

Regular expression, sayısal ve string ifadenin belirli kurallara uyumluluğunu kontrol etmeye ve düzenlemeye yarar. Regex, dize ayrıştırmanın yanı sıra karakter dizesini değiştirmek için de kullanılır.

public static bool isValidMobileNumber(string inputMobileNumber)
{
string strRegex = @"(^[0-9]{10}$)|(^\+[0-9]{2}\s+[0-9] {2}[0-9]{8}$)|(^[0-9]{3}-[0-9]{4}-[0-9]{4}$)";// Class Regex Represents an
// immutable regular expression.
//   Format                Pattern
// xxxxxxxxxx           ^[0 - 9]{ 10}$
// +xx xx xxxxxxxx     ^\+[0 - 9]{ 2}\s +[0 - 9]{ 2}\s +[0 - 9]{ 8}$
// xxx - xxxx - xxxx   ^[0 - 9]{ 3} -[0 - 9]{ 4}-[0 - 9]{ 4}$
Regex re = new Regex(strRegex);// The IsMatch method is used to validate
// a string or to ensure that a string
// conforms to a particular pattern.
if (re.IsMatch(inputMobileNumber))
return (true);
else
return (false);
}

Class ve Struct arasındaki farklar nelerdir?

                                           Class                                                    Struct
Inheritance’ı destekler. Inheritance’ı desteklemez.
Class, reference ile geçer.(reference type) Struct, kopyalama yoluyla geçer.(Value type)
Üyeler varsayılan olarak özeldir. Üyeler varsayılan olarak herkese açıktır.
Büyük ve karmaşık modeller için daha uygundur. Küçük ve izole modeller için uygundur.
Hafıza yönetimi için garbage collector kullanabilir. Garbage collector kullanılmadığından hafıza yönetimi yoktur.

C#’da Exception Handling nasıl uygulanır?

Exception handling, C# ‘da dört anahtar kelime kullanılarak yapılır:

  • try : Bir istisnanın kontrol edileceği bir kod bloğu içerir.
  • catch : Özel durum işleyicisi yardımıyla bir istisnayı yakalayan bir programdır.
  • finally: Bir istisnanın yakalanıp yakalanmadığına bakılmaksızın çalıştırılmak üzere yazılmış bir kod bloğudur.
  • throw : Bir sorun oluştuğunda bir istisna atar.

C#’da Constructor ve Destructor kavramı nedir?

Destructor metodlar çağırılamazlar ve çağırılmadıkları için overload edilemezler.
Destructorlar, bir sınıf için sadece bir tane bulunur
İnteritance özellikleri yoktur.
Struct yapılarda destructor kullanılmaz.

Constructorlar, bir sınıftan new anahtar sözcüğüyle yeni bir nesne oluşturulduğu anda çalışan metottur.
Yapıcı metot sınıf ismiyle aynı olmak zorundadır.
Geriye değer döndürmez. Fakat değer döndürmeyen metotlarda kullanılan void  yapıcı metotlarda kullanılmaz.
Yapıcı metotlar parametre alabilirler, overload olabilirler.

Boxing ve Unboxing nedir?

C#’da veri tipleri, value types ve reference types olmak üzere ikiye ayrılıyor.

Değer tiplerinin referans tipine dönüşmesine kutulama (boxing), referans tiplerin değer tipine dönüşmesine ise kutu-açma (unboxing) denir.

Jagged Array nedir?

Jagged Arrays, elemanları dizi olan bir dizidir. Boyutları tek veya birden fazla olabilir.

int[ ][ ] jaggedArr = new int[3][ ];

C#’da Access Modifierler nedir?

Erişim belirleyiciler (access modifiers), koda dışardan yapılmak istenen müdahalenin sınırlarını belirlemek amacıyla kullanılan anahtar ifadelerdir.

C# programlama dilinde tanımlanan erişim belirleyiciler:

  • Private: Bir değerin private olarak belirtilmesi, tanımlanan değişkene sadece kendi class’ı içinden ulaşılabileceği anlamına gelmektedir. Kesinlikle değiştirilmemesi gereken kodlarda kullanılmaktadır.
  • Public: Bir değerin public olarak tanımlanması, kod içinde herhangi bir yerden erişilebilir durumda olmasını sağlar.
    Public erişim belirleyici tipinde kısıtlama yoktur.
  • Protected: Kod içinde bir değerin protected olarak tanımlanması; bulunduğu class ve o class üzerinden türetilen sınıflar içinden erişilebilir olduğunu göstermektedir.
    Protected; public ve private erişim belirleyicilerinin birleşimi olarak görülebilmektedir.
  • Internal: Internal olarak tanımlanan değer; aynı program içerisinden erişilebilir fakat farklı program içerisinden erişilemez.
    Program içerisinde herhangi bir kısıtlaması yoktur.
  • Protected Internal: Protected internal olarak tanımlanmış değer, tanımlandığı class ve tanımlanan class içerisinden türetilen sınıfların içinden erişilebilir durumdadır.

C#’da Break ve Continue nedir?

Break
-Break ifadesi, hem switch hem de loop (for, while ve do-while) ifadelerinde kullanabilir.
-Switch ve loop ifadeleri, break ifadesi çalıştırıldığı anda sona erer.
-Derleyici bir break ifadesiyle karşılaştığında ve iç döngüden çıktığında döngü veya anahtar iç döngüden çıkar.

 Continue
-Continue ifadeleri yalnızca döngü (for, while, do) ifadelerinde kullanabilir.
-Continue ifadesinin döngüyü sonlandırmasını sağlayamazsınız, hemen sonraki adımı yürütmeden bir sonraki yineleme düzeyine gitmek için döngüyü devam ettirir.
-Switch içindeki yuvalanmış bir döngünün içine yerleştirilen bir continue, sonraki döngü yinelemesine neden olur.

C# Kontrol İfadeleri nelerdir?

Koşul şartı ile gerçekleşmesini istediğiniz durumlar olabilir.
Genel anlamda programlama dilinde kullanılan koşul yapıları iki çeşittir: if-else ve switch yapıları.

Disposeof method nedir?

disposeof () methodu, yönetilmeyen kaynakların serbest bırakılması için kullanılır. Dispose yöntemi programcının kaynakların verimli kullanımı için manuel olarak uygulaması gerekir.
Bu yöntem, IDisposable arabirimi tanımlanarak sınıf tarafından uygulanan IDisposable adlı arabirimde bildirilir.

Public, static ve void arasındaki fark nedir?

Public, Protected ve Private tanımlamalarına erişim belirleyiciler(Access Modifiers) denir. Public olarak tanımlanan öğeye kod bloğunun içinden ve dışından erişebilir, yani her yerden ulaşılabilir denilebilir. Statik tanımlaması yapıldığında ise bu sınıfa herhangi bir nesne oluşturmadan, sadece adıyla çağırıp erişim sağlanabilir.
Void ise geriye değer döndürmeyen metotları belirtmek için kullanılır.

Multicast delegate nedir?

Delegate’ler bir metodun referansı olarak kullanılırlar. Delegate kullanmadan önce, metoda ait type ve imza bilgileri gereklidir.
Multicast Delegate, bir temsilcinin birden fazla metot temsil etmesine denir.
Birden fazla metot saklama (+=) ile yapılır.

Value type ve Reference type farkı nedir?

C# programlama dilinde veri tipleri, value type ve reference type olmak üzere ikiye ayrılır.
Stack üzerinde oluşturulan value type’a sahip veri tipleri, değişkenin değerini direkt bellek bölgesinden alırken heap alanında oluşturulan reference type’lar başka bir nesneye referans olarak kullanılırlar.

C# Collections nedir?

Koleksiyon sınıfları, veri depolama ve erişim için kullanılan sınıflardır. Bu sınıflar System.Collections.Generic ad alanında(namespace) bulunur.

Aşağıdaki gibi birçok koleksiyon sınıfı vardır:

Array list: Tek tek indekslenen nesnelerin sıralı koleksiyonunu ifade eder.

Hash table: Hashtable koleksiyonu anahtar-değer öğelerini depolamak için kullanılır.

Stack: Stack, ilk giren son çıkar işleyişine sahip bir koleksiyondur. (LIFO)

Sorted list: SortedList, anahtar-değer çiftlerini sıralı olarak saklayan bir koleksiyon oluşturur.

Queue: İlk giren ilk çıkar işleyişine sahip bir koleksiyondur.(FIFO)

BitArray: Bir bit dizisidir ve sadece true–false değerlerini içermektedir.