//Notlar tamamen Escan Dönmeze e aittir
kod sonları ( ; ) ile belirtilir, stringler alert veya console.log ( ``,''," )( option+, ) ile belirtilir
.Net Core de { } kullanılır.
-
Değişken tipi
int = sayı değerleri girildiğinde
string = kelime değerleri girildiğinde
bool = true false sorguları için
float = 12.34f şeklinde ondalık sayılarda kullanılır
double = float gibi onladık sayılarda kullanılır daha büyük değerler içindir 123.04; kullanımı bu şekilde
decimal = 12.34m; şeklinde kullanılır float ve double gibidir
var = string ve int türünden değerler atıyabilirsiniz
-
Değişken adı
Sayı ile başlamaz = 1sayi
Arada boşluk olmamalı = birinci sayi
Türkçe karakter kullanılmaz = sayı
Dile özgü anahtar kelimeler kullanılmaz = for,switch,if
//Örnek
int sayi = 10;
long sayi2 = 5432142150; //tarzda daha karmaşık yapıları değer atayabiliriz
short sayi3 = 5; //gibi daha basit yapılı değişkenler atamak için kullanılabilir
byte sayi4 = 0-255 ; //byte da ise 0 ile 255 arası bir değişken atanabilir
console.writeline(sayi); // 10
// ondalıklı sayılarda
float a = 10.5f; //float da ondalık yazdıkdan sonra f yazılmalıdır
double b = 20.6; //double da ise böyle bir zorunlulık yokdur float la aynı işlevd
decimal c = 100.56m;//decimal olduğunu belirtmek için sayı sonuna m ekle
//Daha karmaşık yapılar için decimal kullanılır
//basit eylemler için float
//karakter
string name = "Escan Dönmez"; //veri değişkeni için
char ch = 'a'; //tek heceli değişkenler için
//boolean
bool isRetired = true;
bool isActive = false;
//Null
byte? kilo = null; /* Eğer bir değişkenin verisini bir kullanıcının vermesini
istiyorsanız null kullanarak orayı boş bırakabilirsiniz */
//string değişkeninde ise
string plaka; //şeklinde kullanabilirsiniz
//boolda ise
bool? cinsiyetErkek = true
bool? cinsiyetKadın = true /*eğer kişi cinsiyetini belirtmek istemiyorsa hiçbirini
seçmeyebilir */
//Notlar tamamen Escan Dönmeze e aittir
// notlar tamamen Escan'a aittir
//EXPLİCİT
Console.Write("1. sayı"); // write komutu kodu yazar ve alt satıra geçmez
int sayi1 = int.pars(Console.Readline()); //bizden değer girmemizi ister
//değerimizi int e çevirir
Console.Write("2. sayı"); // write komutu kodu yazar ve alt satıra geçmez
int sayi2 = int.pars(Console.Readline());//bizden değer girmemizi ister
//değerimizi int e çevirir
int toplam =sayi1 + sayi2;
Console.Writeline($"girilen toplam değer: {toplam}");
//İMPLİCİT int-long-float-double
int a = 10;
long b = a; //longun kapasitesi int den büyük olduğu için bize bir hata vermez
long c = 10;
int d = c; /*burda büyük bir veri türünü küçük bir veri türüne eklemeye çalışır
buyüzden bu kod hatalı dır */
long c = 10;
int d = (int)c; //bu şekilde bilinçli tür dönüşümü yapabiliriz bu kod çalışır
float e = 10.5f;
double f = e; //bu kod hatasızdır çünkü float double a göre daha az yer kaplar
double g = 10.6;
float f = (float)g; //bu kod hatalı değildir
//int to string
int x = 10;
string z = x.ToString; //koduyla sayıyı stringe çevirebiliriz
string name = "escan";
string surname ="dönmez";
int age = 18;
string str = string.Format("my name is {0} {1} and I'm {2} ",name,surname,age);
//0 name in yerine 1 surname in yerine age ise 2 nin. yerine gelir
string str = $"My name is {name}"; //şeklinde de kullanılır
// notlar tamamen Escan'a aittir
string msg = "Hello I'm Escan" ;
Console.Writleline(msg.Length); //msg değişkenin kaç karakterli olduğunu yazar
Console.Writleline(msg.ToLower);//msg değişkenin deki tüm karakterleri küçültür
Console.Writleline(msg.ToUpper);//msg değişkenin deki tüm karakterleri büyütür
Console.Writleline(msg.Trim());//msg deki tüm gereksiz boşlukları kapatır
Console.Writleline(msg.Split(0));//msg deki ilk kelime alır ve bize sunar
Console.Writleline(msg[0]);//msg deki ilk harfi alır ve bize sunar
Console.Writleline(msg.StartsWith("h"));//msg de h harfi varmı varsa true yazar
Console.Writleline(msg.EndWith("Escan"));//cümle escan ile bitiyorsa true yazar
Console.Writleline(msg.Contains("@"));//cümlede @ işareti varmı varsa true
Console.Writleline(msg.İndexOf("hello"));//bize 0 verir çünkü cümlede başta
Console.Writleline(msg.Substring(5));//5. indexden itibaren bize bilgiyi verir
Console.Writleline(msg.Replace(" ",","));//boşlukları , yapar
Console.Writleline(msg.Insert(0,"..."));//en başa 3 nokta koyar
string msg ="Hello There";
var result = msg.Split();
Console.Writeline(result[0]); //hello yu yazdırır
Console.Writeline(result[1]);//There yazdırır
//Eğer split kullanmasaydık hello yu h e l l o şeklinde bize ayıracakdı
string[] isimler = new string[3];
isimler[0] = "ahmet"
isimler[1] = "Escan"
isimler[2] = "Yiğit"
Console.Writeline(isimler[2]); //Yiğit adını yazdırır
int[] numaralar = new int[3];
numaralar[0] = 101;
numaralar[1] = 102;
numaralar[2] = 103;
Console.Writeline($"öğrenci adı: {isimler[0] ve numara {numaralar[0]}}");
//çıktı: ahmet ve numara 101 şeklinde çıktıyı verir
//alternatif olarak
string[] isimler = {"ahmet,escan,demirhan"}; //şeklindede kullanabilirsiniz
Console.Writeline($"öğrenci adı {isimler[0]}");
//Eğer diziden bir elemanı değiştirmek istiyorsan
isimler[0] = "Murat";
string[] isimler = {"ahmet,murat,escan,esra"};
int[] numaralar = {"5,4,3,2,1"};
isimler.SetValue("Ali",0); //0. indexi Ali ile değiştirdik
console.writeline(isimler[0]);
console.writeline(Array.IndexOf(isimler,"Escan"));// index numarası yani 2 i verir
console.writeline(isimler.Length);//isimlerin uzunluğunu sayı olarak verir yani 3
Array.Sort(isimler); //alfabetik olarak diziyi sıralar
Array.Sort(numaralar); //sayı numaralarına göre sıralar
Array.Reverse(isimler);//alfabede en sondaki elementi alır
Array.Reverse(numaralar);//en büyük sayıyı alır
var result = isimler[1..4];// 1 den 4. elemana kadar
// notlar tamamen Escan'a aittir
DateTime simdi = DateTime.Now; //kullanılan bilgisayarın zaman dilimini. yazar
console.writeline(simdi);
console.writeline(simdi.Year); //sadece yıl ı yazdırır
console.writeline(simdi.Month);
console.writeline(simdi.day);
console.writeline(simdi.DayOfWeek);//haftanın günü
console.writeline(simdi.hour);
console.writeline(simdi.minute);
console.writeline(simdi.second);
DateTime dt = new DateTime(2021,2,22,14);//saat ve dakikasına kadar belirtebilir
CultureInfo culture = new CultureInfo("tr");
Console.Writeline(simdi.ToString("F",culture))
//kullanmak için using System.Globalization ı en üste eklemelisin
// (+,-,*,/,%,++,--)
int a = 10;
int b = 20;
int val;
//Notlar tamamen Escan Dönmeze e aittir
Console.Writeline("value "+ val);
val = a + b; // 30
val = a - b; // -10
val = a * b; // 200
val = (float)a / (float)b; // 0.5
val = b % a; //0 b yi 10 a böler sayı çift mi tekmi onu öğreniriz
val = a++; // 11
val = b-- // 19
// notlar tamamen Escan'a aittir
// (=,+=,-=,*=,/=,%=)
int x=5,y=10,z=20;
x += 5; // 10
x -= 5; // 0
x *= 5; // 25
x /= 10; // 2
x %= 5; // 1 yani tektir
val = Math.Round(4.4); // 4 e yuvarlar
// (==,!=,<,>,<=,>=,?:)
int a=5,b=5,c=10,d=4;
a == b; //a b ye eşit mi ?
a != b; // a b ye eşit DEĞİL mi ?
a < b; // a b den küçük mü ?
a > b; // a b den büyük mü ?
a <= b;// a b den küçükmü yada eşit mi ?
a >= b;// a b den büyükmü yada eşit mi ?
string sonuc = (usurname == escan)?"şifre doğru":"şifre yanlış";
// notlar tamamen Escan'a aittir
// (&&,||,!)
int x = 5;
var result = (x<5);
result = (x<10);
result = (x<5) && (x<10);// And operatörü ikiside doğru olmalı yani cvp false
result = (x<5) || (x<10)// Or opreatörü ikisinden biri doğru olması yeter True
result = !(x<10) // true => false | false => true çevirir
// notlar tamamen Escan'a aittir
if(3>2){
Console.Writeline("hoşgeldin"); //eğer 3 2 den. büyükse hoşgeldin yazdır
}
else{
Console.Writeline("sistemden çıkıldı")//döngü tutmuyorsa else yazar
}
//önrek 2
var isLoggedin = true;
if (isLoggedin == true){
Console.Writeline("sisteme girdi"); //koşul tutarda sisteme girer
}
else{
Console.Writeline("sistemden çıkıldır");// koşul false olsaydı sisteme girilemezdi
}
//örnek 3
string usurname = "Escan"
string password = "12345"
if ((usurname == "Escan") && (password == "12345")){
Console.WriteLine("hoş geldin");
}
else{
Console.WriteLine("usurname ya da password yanlış")
}
Console.WriteLine("1.sayı")
int x = int.Parse(Console.ReadLine())
Console.WriteLine("2.sayı")
int y = int.Parse(Console.ReadLine())
if (x > y){
Console.WriteLine("x y den büyük");
}
else if(x==y){
Console.Writeline("x y ye eşit")//alternatif döngü
}
else{
Console.WriteLine("y x den büyük");
}
// notlar tamamen Escan'a aittir
int ay = 5;
//switch if koşullarını ard arda yazmatansa bize kolaylık sağlar
switch(ay){
case 12:
console.writeline("kış mevsimi");
break; //kodun diğer case e geçmesini engeller
case 1:
console.writeline("kış mevsimi");
break;
case 2:
console.writeline("kış mevsimi");
break;
default: // eğer kodlardan hiçbiri gerçekleşmezse burdaki kod gerçekleşir else gibi
}
for (int i = 0; i < 5; i++)//i 5 olana kadar i ye 1 eklenir
{
Console.WriteLine(i);
}
//Yada
for (int i = 50; i >= 1;i=i -2)//i 1 den büyük olana kadar 2 çıkartır
{
Console.WriteLine(i);
}
// notlar tamamen Escan'a aittir
while(şart){
//yapılacak işlemler
}
//Örnek
int i = 0;
while(i <= 10){ //başlangıç değeri döngünün dışında
Console.Write(i);
i++ // arttırma ise döngü içinde
}
//while içinde if gibi koşul larda kullanılabilir
string name = "";
while(string.IsNullOrEmpty(name)){ //eğer name değişkeni boş ise True çkts verir
Console.Write("isminiz: ");
name = Console.ReadLine();
}
//do while while döngüsünün ters halidir do while döngüsünde şart en alta yaz
do {
//yapılacak işlemler
}
while(şart);
//Örnek
int i = 0;
do{
Console.Write(i);
i++
}while(i < 10);
string name = "Escan";
for(int i = 0; i < name.Length; i++){
if(name[i] == 'c'){
break; //Döngü bittiğinde döngüden çıkmak için break kullanılır
Console.Writeline(name[i]);
}
}
//eğer break yerine continue dersek
string name = "Escan";
for(int i = 0; i < name.Length; i++){
if(name[i] == 'd'){
continue; //Döngünün turunu bitirir ve sonraki döngüden devam eder
Console.Writeline(name[i]);
}
}
//Notlar tamamen Escan Dönmeze e aittir
int[] ogrno = {100,200,300};
string[] ad = {"Escan,demirhan,aslan"};
string[] sube = {"10A,10B,10C"};
//class da ise
namespace ConsoleApp //yani class program üstüne
{
class Ogrenci{
//prop yazıp tab tuşuna basarsanız gelecekdir
public int ogrno {get; set;}
public string ad {get; set;}
public string sube {get; set;}
//bunları yazdıkdan sonra normal kodları yazdığımız yere dönüp
Ogrenci ogr1 = new Ogrenci() ;
ogr1.ogrno = 100; //ogrno ad ve sube otomatik çıkacakdır
ogr1.ad = "Escan";
ogr1.sube = "10A";
//alttaki gibide kullanabilirsin
Ogrenci ogr2 = new Ogrenci()
{
ogrno = 200,
ad = "demirhan",
sube = "10B"
};
Ogrenci[] ogrenciler = new Ogrenci[3]; //3 elemanlı olduğunu söyledik
ogrenciler[0] = ogr1; //yani classıda diziye ekleye biliriz
Console.Writeline($"no: {ogr1.OgrNo} ad: {ogr1.ad} sube: {ogr1.sube}");
}
// **INTRO METODU**
class Person{
public string name {get; set; }
public int year {get; set; }
**public string Intro(){ //Intro metodu
return $"name: {this.name} age: {2021-this.calculateAge}";
}
public int calculateAge(){
return DateTime.Now.Year - this.year;//günümüzden year değişkenini çıkarcak
}**
}
//static voide Main(string[]) args) yani kod yazma alanı
Person p1 = new Person(){ name="ada",year=2012}; //p1.name den bir farkı yok
Person p2 = new Person(){ name="escan",year=2007};
Person p3 = new Person(){ name="demirhan",year=2006};
//public string Intro metodu sayesinde daha kolay ve pratik yazdırabiliyoruz
Console.Writeline(p1.Intro());
Console.Writeline(p1.Intro()); //çıktı aşağıdaki kod la aynı olacak
Console.Writeline(p1.Intro());
//üst de kullandığımız Intro() metodu sayesinde bunları yazdırmamıza gerek yok
//Console.Write($"name: {p1.name} age: {2021-p1.year}");
//Console.Write($"name: {p2.name} age: {2021-p2.year}");
//Console.Write($"name: {p3.name} age: {2021-p3.year}");
//ÖRNEK
using System;
namespace consoleapp
{
class araba{
public string marka { get; set; }
public string model { get; set; }
public string renk { get; set; }
public bool otomatik { get; set; }
//methods
public void start(){
Console.WriteLine($"{this.marka} araç çalıştırıldı");
}
public void stop(){
Console.WriteLine($"{this.marka} araç durdu");
}
public void hizlan(){
Console.WriteLine($"{this.marka} araç hızlandı");
}
public void ozellik(){
Console.WriteLine($"{this.marka}, {this.model}, {this.renk}, otomatik:{this.otomatik},");
}
public void menu(){
string secim = "";
do
{
Console.WriteLine("******************");
Console.WriteLine("1-start 2-stop 3-hız 4-özellik çıkış-ç");
Console.Write("Seçiminiz: ");
secim = Console.ReadLine();
switch (secim)
{
case "1":
this.start();
break;
case "2":
this.stop();
break;
case "3":
this.hizlan();
break;
case "4":
this.ozellik();
break;
case "ç":
break;
default:
Console.WriteLine("yanlış seçim");
break;
}
} while (secim!="ç");
}
}
class Program
{
static void Main(string[] args)
{
var opel = new araba();
opel.marka = "opel";
opel.model = "astra";
opel.renk = "kırmızı";
opel.otomatik = true;
var mazda = new araba();
mazda.marka = "mazda";
mazda.model = "gamaro";
mazda.renk = "kırmızı";
mazda.otomatik = true;
string araç = "";
Console.Write("araç seçimin: ");
araç = Console.ReadLine();
switch (araç)
{
case "mazda":
mazda.menu();
break;
case "opel":
opel.menu();
break;
default:
Console.Write("yanlış seçim");
break;
}
}
}
}
// notlar tamamen Escan'a aittir
class Islem {
public int Toplam(int x, int y){ // x ve y parametresi tanımladık
return x+y;;
}
}
//kod alanı
var islem = new Islem();
Console.Writeline(islem.Toplam(x:10,y:20));//named parameters
//yada
class Islem {
public int Toplam(params int[] sayilar){
foreach (var sayi in sayilar){
toplam += sayi;
}
return toplam;
}
}
//kod alanı
var islem = new Islem();
Console.Writeline(islem.Toplam(10));
Console.Writeline(islem.Toplam(10,20));
Console.Writeline(islem.Toplam(10,20,30));
//şeklinde daha da pratik kullanabilirsin
class araba{
public araba (string marka,string model){ //ctor yazarak otomatik getirebilirsiniz
this.marka = marka;
this.model = model;
}
}
var opel = new araba("opel","astra");
// opel.marka = "opel"; Yukarıda yaptığımız kod sayesinde böyle uğraşmamıza
// opel.model = "astra"; gerek kalmadı
class product{
private string _name;
public string name{
get{
return _name; //kullanıcı name istediğinde _name i vericek
}
set{
if(!string.isNullOrEmpty(value)){ //string boş değil se
_name = value; //_name value ayarla
}
else{
Console.Writeline("name alanı boş geçilemez"); //eğer boş ise yazdır
}
}
}
private double _price;
public double Price{
get{
return _price; //_price ı sunucak
}
set{ //0 dan küçük değişken gelirse onu 0 a sabitliyicek
if(value<0){
_price = 0;
}
else{
_price = value;
}
}
}
}
}
//kod alanı
var p = new product();
p.name = "samsung";
p.Price=2000;
/*turuncu alanda _price a özel izinli değişken atadık */
/*mavi alanda _price ı özel eleman yaptık yani sadece özel değişkenler burdaki
değişkeni değiştirebilir */
console.Write(p.name);
console.Write(p.Price);//Price ekrana yazıyor yani _price ı
// notlar tamamen Escan'a aittir
/* Static bir class ın tüm içeriği statik olmalıdır statik class lardan normalde
kaçınılır çünkü static bir class a tüm client lar ulaşabilir fakat bazı durumlarda
static hayat kurtarır*/
class student{
public string name {get;set;}
public int StudentNumber {get;set;}
static class HelperMethods{
public static string karakterDuzelt(string str){
return str.Replace("c"); //c harflerini silecek
}
}
public static string school = "my school"; //static member
public Student(string name,int studentnumber){
this.name = name;
this.StudentNumber=studentnumber;
}
public void DisplayStudentDetails(){
Console.writeline($"name: {this.Name} number: {this.StudentNumber}")
}
public void DisplaySchoolDetails(){
Console.Writeline($"school name: {school}");
}
}
//kod bölümü
var s1 = new Student("Çınar",100);
var s2 = new Student("Seçil",200);
var s3 = new Student("Escan",300);
student.DisplaySchoolDetails();
s1.DisplayStudentDetails();
s2.DisplayStudentDetails();
s3.DisplayStudentDetails();
string str = "ölcme be değerlemdirme"; //c harfi silindi
var result = HelperMethods.KarakterDuzelt(str);
Console.Write(result);
//sarı kodlar konuyla alakalı static member
// Person => name, surname, age, eat(), drink()
// student(Person) => studentnumber()
// Teacher(Person) => brach(), tech()
/* bir öğrenci veya bir öğretmen temelde bir insandır ve en basitinden yeme içme
tarzı basit ve temel ihtiyaçları gidermelidir bu temel ihtiyaçları gideren
değişkenimiz Person, bir öğrencinin numarası illaki olmalı bu ekstra bir özelliği
yani temel özelliklerinden farklı olarak aynı şekilde öğretmen temel özelliği
dışında bir branşa ve öğretme özelliğine sahip olmalı.*/
class Person{
public string Name {get;set;}
public string SurName {get;set;}
//Method
public Person(){
Console.Write("Person nesnesi oluşturuldu");
}
}
class Student: Person // Student sınıfına Person özelliklerini atadım {
Console.Write("student nesnesi oluşturuldu");
}
//Kod alanı
var s = new Student(); /*iki yazıyıda konsola yazdırır ama ilk önce person u yazdı
rır çünkü en temel özelliklerini Person dan alıcak ve sonrasında kendi ekstraları
nı ekleyecek. */
//EĞER bir değişken eklersek nasıl olur ?
class Person{
public string Name {get;set;}
public string SurName {get;set;}
public void Intro(){
Console.WriteLine($"name: {this.Name} Surname: {this.SurName}");/* kod alanı ile
buranın iletişimi olmadığından dolayı buraya this. yazıyoruz bizim yerimize
p ile s değişkenlerini yazdıracak*/
}
public Person(string name, string surname){ /*bir değişken eklersem bu değişkeni
Student ada eklemeliyim */
this.Name = name;
this.SurName = surname;
}
}
class Student: Person{
public Student(string name, string surname): base(name,surname){ /*persondan this
.Name komutunu çalıştırdı fakat Student için*/
}
}
//Kod alanı
var p = new Person("Ali","Yılmaz");
var s = new Student("Çınar","Turan");
p.Intro();
s.Intro();
// notlar tamamen Escan'a aittir
abstract class shape{
public int width {get;set;}
public int height {get;set;}
public abstract void draw(); /*draw metodu şu anda sadece sanal bir metod oyüzden
bunu sadece diğer sanal olmayan classlar kullanabilir */
}
class Square: shape{
public override void draw(){ //draw ı override ederek onu değiştirdik
// Not: bu değişiklik sadece square drawı çağrıldığında olur
Console.Writeline("Draw a square");
}
}
class rectangle: shape{
public override void draw(){ //draw ı override ederek onu değiştirdik
// Not: bu değişiklik sadece rectangle drawı çağrıldığında olur
Console.Writeline("Draw a rectangle");
}
}
//Kod alanı
var shape = new shape [3]
shape[0] = new rectangle();
shape[1] = new Square();
shape[2] = new rectangle();
foreach (var shapes in shape)
{
shapes.draw();
}
interface IPersonel{ /*Mantığı tamamen kalıtım ile aynı tek fark burda tanımlanan
herşey abstract ve public olarak çalışır*/
string adSoyad {get;set;}
string adres {get;set;}
string Departman {get;set;}
void bilgi();
}
class Yonetici: IPersonel{ //IPersonel üzerine gelip control+. yapınca ilk sıraya tıklarsan tüm değişkenker otomatik gelicek
public string adSoyad {get;set;}
public string adres {get;set;}
public string Departman {get;set;}
void bilgi(){
Console.WriteLine($"{this.adSoyad} isimli personel {this.departman} bölümünde
yönetici");
}
public Yonetici(string _adsoyad,string _adres,string _departman){
this.adSoyad = _adsoyad;
this.adres = _adres;
this.Departman = _departman;
}
}
class Iscı: IPersonel{
public string adSoyad {get;set;}
public string adres {get;set;}
public string Departman {get;set;}
void bilgi(){
Console.WriteLine($"{this.adSoyad} isimli personel {this.departman} bölümünde
işci");
public Iscı(string _adsoyad,string _adres,string _departman){
this.adSoyad = _adsoyad;
this.adres = _adres;
this.Departman = _departman;
}
}
//kod alanı
var personeller = new IPersonel[3];
personeller[0] = new Yonetici("Escan","istanbul","Finans")
personeller[1] = new Iscı("ahmet","izmir","üretim")
personeller[2] = new Iscı("mehmet","izmir","üretim")
foreach (var personel in personeller){
personel.bilgi();
}
// notlar tamamen Escan'a aittir
//metodların ne işe yaradığını veya Icollection gibi yerlerde hangi metodlar var
//öğrenmek için şu linke tıkla
//https://docs.microsoft.com/tr-tr/dotnet/api/system.collections.arraylist?view=net-5.0
// ArrayList yazıp control+. ya bastığımızda ilk sıradaki ne tıklamalıyız
ArrayList myList = new ArrayListy();
//myList. burda tüm metodlar görünücek
myList.Add("abc"); //listeye abc eklendi
MyList.InsertRange(3,mylist2);//3. index den sonra mylist2 yi aktar
// YADA
ArrayList myList2 = new ArratList(){10,"10","abc"}. //şeklindede kullanılabilir
myList2.Insert(20);//listenin sonuna 20 yi ekler
Console.Writeline(myList[0]); //ilk elemana ulaşırsın yani 10'a
int sayi = mylist2[1]; //"10" stringini int e çevirdik
//Remove Items
myList2.Remove(10);//mylist2 deki 10 elemanı gitti
// Konu hakkında rehber için : https://docs.microsoft.com/tr-tr/dotnet/api/system.collections.generic.list-1?view=net-5.0#methods
//Generic List tipi başta belirtilmeli ve hep o kullanılmalı
//List yazdıkdan sonra control+. yaparak ilk sıradakine tıkla
List<int> sayilar = new list<int>();
sayilar.Add(10); //sadece int atayabilirim
sayilar.Add(20);
sayilar.Add(30);
List<string> harfler2 = new list<string>();
sayilar2.Add("a"); //sadece string atayabilirim
sayilar2.Add("b");
sayilar2.Add("c");
sayilar2.AddRange(sayilar);//bu geçerli olmaz çünkü sayilar int türünden
//Dictionary yazıp control+. yapıp ilk sıradakine tıkla
Dictionary<int,string> plakalar = new Dictionary<int,string>(); //keyi int
//değeri value olarak ayarladık
plakalar.Add(34,"istanbul"); //key 34 değer ise istanbul
plakalar.Add(35,"izmir");
// notlar tamamen Escan'a aittir
Console.Write("a: ")
int a = int.Parse(Console.Readline());
Console.Write("b: ")
int a = int.Parse(Console.Readline());
var sonuc = a/b;
Console.WriteLine($"{0} / {1} = {2}"a,b,c,sonuc)
//Burda 0 a bölünemedi hatası verir ve program durdurulur bunu çözmek için
try{
Console.Write("a: ")
int a = int.Parse(Console.Readline());
Console.Write("b: ")
int a = int.Parse(Console.Readline());
var sonuc = a/b;
Console.WriteLine($"{0} / {1} = {2}"a,b,c,sonuc)
}
catch(DvideByZeroException)//hatanın adı konsolda görünücek onu yaz
{
Console.WriteLine("b sıfır olamaz");
}
//Diyelimki formatexeption yani int yazılması gereken yere string girdiniz
catch(FormatException){
Console.Writeline("Sayısal bir değer girmelisin");
}
//Eğer hata hakkında bilgi vermek istemiyorsanız sonuna ex ekleyin
catch(Exception ex){
Console.WriteLine("Bir hata oluştu");
Console.WriteLine(ex.Message);
}
finally{
Console.WriteLine("blok çalıştırıldı");
}
int sayi = 10;
if (sayi>5){
throw new Exception("sayi 5 den büyük olamaz") /*program çalıştığında hata vericek
ve hata açıklaması olarak yazdırır buna hata fırlatma denir Not: kod hatalı değil
biz hata vermesini istediğimiz için verdi */
}
/*------------------------------------------------------*/
static void check_password(string password){
if(password.Length<8 || password.Length>15){ /* şifre 8 den küçük yada 15 den
büyük ise Parola 7-15 karakter arasında olmalı hatası ver */
throw new Exception("Parola 7-15 karakter arasında olmalı")
}
}
//kod alanı
string parola = "1234567a";
try{
check_password(parola)
Console.WriteLine("parola geçerli.");
}
catch(Exception ex){
Console.Weiteline(ex.Message)
}
//Main alanı
GetSqlConnection();
// Main alanın altına
static void GetMySqlConnection{
string connectionString = @"server=localhost;port:3306;database=ShopApp;user=
root;password=1234"
using(var connection = new MySqlConnection(connectionString)){
try{
connection.Open();
Console.WriteLine("Bağlantı sağlandı");
}
catch(Exception e){
Console.Writeline(e.Message)
}
finally{
connection.Close
}
}
}
//View+ çıkan arama çubuğuna MySql.Data tıklayın son
//versiyonu onaylayın
//ardından çıkan ConsoleApp.csproj da konsole dotnet restore yaz
//Main alanı
GetAllProduct();
//Main alanın altı
static void GetAllProduct()
{
using(var connection = GetMySqlConnection()) //anahtar ve kili burda
// birleştirdik
{
try
{
connection.Open();
//connection sağla
string sql = "select * from Product";
//Product tablosunu seç
MySqlCommand command = new MySqlCommand(sql,connection);
//sql ile connection ı bağladık böylece komut işe yarayacak
MySqlDataReader reader = command.ExecuteReader();
//bu reader değişkeni sayesinde bu bilgileri okuycaz
while(reader.Read())
{
Console.WriteLine($"name: {reader[1]} price:{reader[2]}");
//Burda reader ile okuyacağı kolonu seçtik
}
reader.Close();
//okuyucuyu kapattık
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
connection.Close();
}
}
}
static MySqlConnection GetMySqlConnection()
{
string connectionString = @"server=localhost;port=3306;database=ShopApp;user=root;password=er266914";
//Veri tabanına gireceğimiz anahtarı oluşturduk
return new MySqlConnection(connectionString);
//burda da kilidi çağırdık yani connectionString i
}
//namespace alanı ayrı bir program.cs alanında
class Program{
public int ProductId {get;set;}
public string Name {get;set;} //Altta yazdığımız kodlar sayesinde veri tabanını buraya taşıdık
public double Price {get;set;}
}
//Main alanı
var products = GetAllProduct();
foreach (var pr in products){
Console.WriteLine($"name: {pr.Name} price: {pr.Price}")
}
//Main alanın altı
static List<Product> GetAllProduct()
{
List<Product> products = null;
using(var connection = GetMySqlConnection()) //anahtar ve kili burda
// birleştirdik
{
return products;
try
{
connection.Open();
//connection sağla
string sql = "select * from Product";
//Product tablosunu seç
MySqlCommand command = new MySqlCommand(sql,connection);
//sql ile connection ı bağladık böylece komut işe yarayacak
MySqlDataReader reader = command.ExecuteReader();
//bu reader değişkeni sayesinde bu bilgileri okuycak
products = new List<Product>();
//list e gelip command+. ile using ini ekleyin
while(reader.Read())
{
products.Add(
new Product
{
ProductId=int.Parse(reader["id"].ToString()),
//ProductId yi veri tabanındaki id ile eşliyoruz
Name = reader["product_name"].ToString(),
//Name i veritabanındaki product_name ile eşliyoruz
Price = double.Parse(reader["list_price"]?.ToString()),
//Price ı veri tabanındaki lisr_price ile eşliyoruz
}
);
Console.WriteLine($"name: {reader[1]} price:{reader[2]}");
//Burda reader ile okuyacağı kolonu seçtik
}
reader.Close();
//okuyucuyu kapattık
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
connection.Close();
}
}
}
static MySqlConnection GetMySqlConnection()
{
string connectionString = @"server=localhost;port=3306;database=ShopApp;user=root;password=er266914";
//Veri tabanına gireceğimiz anahtarı oluşturduk
return new MySqlConnection(connectionString);
//burda da kilidi çağırdık yani connectionString i
}
//Product (Id,Name,Price) => Product(Id,Name,Price)
public class Product{
//primary key (Id, <type_name>Id)
public int Id {get;set;}
[MaxLength(100)]//Maksimum 100 değer atanabilir dedik command+. namespace ekle
[Required] //zorunlu bir değer olduğunu söyledik
public string Name {get;set;}
public decimal Price {get;set;}
}
public class Category
{
public int Id {get;set;}
public string Name {get;set;}
}
/* Aşağıdaki kodları yazdıkdan sonra veri tabanı ile sekronize oluyoruz üstteki
Üstteki görseldeki kodları sırasıyla terminale yazdığımızda veri tabnımızı bize
oluşturur*/
// Model First (Yeni Veritabanı Oluşturma Visual Studio İle)(Şuan yaptığımız)
// Database First (Var Olan Veritabanını Kullanma)
// Code First (Yeni Veritabanı Kod Yazarak)
// Code First(Var Olan Veritabanını Kullanma)
public class ShopContext:DbContext //command+. yapıp using ini ekle
{
public DbSet<Product> Products {get;set;}
public DbSet<Category> Categories {get;set;}
protected override void OnConfiguring(DbContextOpitonsBuilder optionsBuilder){
//DbContextOptionsBuilder a cmd+. diyerek change ile başlayan seçeneğe tıklayın
optionsBuilder.UseMysql(@"server=localhost;port=3306;database=Shop;user=root;password=er266914");
}
}
public class Product{
//primary key (Id, <type_name>Id)
public int Id {get;set;}
[MaxLength(100)]//Maksimum 100 değer atanabilir dedik command+. namespace ekle
[Required] //zorunlu bir değer olduğunu söyledik
public string Name {get;set;}
public decimal Price {get;set;}
}
public class Category
{
public int Id {get;set;}
public string Name {get;set;}
}
public class ShopContext:DbContext
{
public DbSet<Product> Products {get;set;}
public DbSet<Category> Categories {get;set;}
protected override void OnConfiguring(DbContextOpitonsBuilder optionsBuilder){
optionsBuilder.UseMysql(@"server=localhost;port=3306;database=Shop;user=root;password=er266914");
}
}
public class Product{
public int Id {get;set;}
[MaxLength(100)]
[Required]
public string Name {get;set;}
public decimal Price {get;set;}
}
public class Category
{
public int Id {get;set;}
public string Name {get;set;}
}
//MAİN alanı
using(var db = new ShopContext()){
var p = new Product {Name = "Samsung S5",Price = 2000};
// p değişkenine Name ve price değerlerini atadık
db.Products.Add(p);
//başta atadoğomız db komutuyla products tablosuna p yi ekledik
db.SaveChanges
// yaptığımız herşeyi save ledik ki görünsün
Console.WriteLine("Veriler eklendi");
}
**Eğer birden fazla kategori eklemek istiyorsak**
using(var db = new ShopContext()){
var products = new List<Product>//cmd+. ile namespace ini ekle
{
//products değişkenine bütün listeyi atadık
new Product {Name = "Samsung S6",Price = 2000},
new Product {Name = "Samsung S7",Price = 4000},
new Product {Name = "Samsung S8",Price = 5000}
};
db.Products.AddRange(products);//Products tablosuna products değişkenini yolladık
db.SaveChanges
// yaptığımız herşeyi save ledik ki görünsün
Console.WriteLine("Veriler eklendi");
}
//Main alan
GetAllProducts();
//main alanın altına
static void GetAllProducts(){
using(var context = new ShopContext()){
var products = context
.Products
.Select(product => new {
p.name,
p.price
})
.ToList(); //cmd+. ile namespace ekle ToList SaveChanges ile aynı görevde
foreach(var p in products){
Console.WriteLine($"name: {p.Name} price: {p.Price}");
}
}
}
//Main alan
UpdateProduct();
//main alanı altı
static void UpdateProduct(){
using(var db = new ShopContext()){
var entity = new Product(){Id=1};
//Id 1 i değiştireceğimiz söyledik
db.Products.Attach(entity);
//attach anlamı ise entity yi takip etmek olarak atadık eğer entity takip etmez
// ise kod başarısız olur
entity.Price = 3000;
//fiyatı 3000 olarak değiştirdik
db.SaveChanges();
}
}
// Main alan
DeleteProduct();
//Main alan altı
static void DeleteProduct(int id){
using(var db = new ShopContext()){
var p = new Product(){Id==6};
db.Products.Remove(p);
db.SaveChanges();
}
}
public class ShopContext:DbContext
{
public DbSet<Product> Products {get;set;}
public DbSet<Category> Categories {get;set;}
public DbSet<Order> Orders {get;set;}
protected override void OnConfiguring(DbContextOpitonsBuilder optionsBuilder){
optionsBuilder.UseMysql(@"server=localhost;port=3306;database=Shop;user=root;password=er266914");
}
}
public class Product{
public int Id {get;set;}
[MaxLength(100)]
[Required]
public string Name {get;set;}
public decimal Price {get;set;}
public int CategoryId {get;set;}
/*Örneğin biz CategoryId yi ekledik fakat biz bunu eklediğimizde başta eklediğimiz
migration a eklenmez bunun için bir aktarım yapmamız gerek terminal'e dotnet ef
--help yazarak görebilirsiniz*/
/*Terminale şu kodları girmeliyiz dotnet ef migrations add addColumnProductCategoryId
üstte yazdığımız kodda şunu söyledik Product alanına CategoryId kolonunu ekleyin
Ama bunlar ile bitmiyor ayriyetden terminale dotnet ef database update yazarak
databesi i güncellemelisiniz
*/
}
public class order{
//Burayı ekledikden sonra order dbcontext eklemelisiniz
public int Id {get;set;}
public int ProductId{get;set;}
public DateTime DateAdded {get;set;}
//dotnet ef migrations add addTableOrder terminale yazın ardından
//dotnet ef database update diyerek güncelleye bilirsiniz
//Eğer ki yaptığınız son işlemden pişman oldunuz yani eklemek istemediniz
//Merak etme çözümü çok basit
//dotnet ef database update addCollumnProductCategoryId yani bundan önceki ekledi-
//ğiniz kolon veya table ın adını girdiğinizde ozamana kadar eklediklerinizi askıya alır
//Eğer ben silicem derseniz dotnet ef migrations remove diyerek son eklediğinizi siler
//Not: silmeden önce migration ı databse den çıkarmış olmalısnız yani dotnet ef database update addCollumnProductCategoryId yazarak eylem dışı bırakmalısınız
//Peki tamamen 0 a dönmek yani hepsini silmek isterseniz dotnet ef database update 0 yazman yeterli
}