Write-Host "Deger girin:" -NoNewline
$arg = Read-Host$hash = [System.Security.Cryptography.MD5]::Create()
$data = [System.Text.Encoding]::ASCII.GetBytes($arg)
$array = $hash.ComputeHash($data)
foreach($byte in $array)
{$output += $byte.ToString("x2")}
Write-Host "result -> " $output

Merhaba arkadaşlar,

Bu kısa yazıda Csharp kodlamalarındaki bazı pratik bilgi ve kullanımları örneklendirmeye çalıştım. Umarım faydalı olur.

Veri tipleri;

//sayısal değer tanımlarken varsayılan
var n1 = 10; //tam sayılar Int32

var n2 = 10.2; //ondalıklı sayılar ise Double olarak işaretlenir

//postfix ler
float f1 = 10.1f;
double do1 = 10.1d;
decimal de1 = 10.1m;

byte b1 = 255;
byte b2 = 255;

//hata verir - taşma riski var
byte b3 = b1 + b2; //iki byte işleme girerse sonuç integer olur

//string değişmez, yani ilk atamada veri uzunluğu kadar hafıza alanını alır
string name = "Emre";
//değişken üzerinde yapılan her işlem yeni bir string üretir
name = name.ToLower();
//artı operatörü aşırı yüklemesi direk olarak ToString() sonucu verir
int age = 10;
string message = "Yaşım = " + yas;//.ToSting() yazmaya gerek yok
//string birleştirme işlemlerini + operatörü yerine mevcut metodlar ile yapın
string alert = string.Format("{0} {1}, {2}",firstname,lastname,age);
string fullName = string.Concat(firstname," ",lastname);
//daha uzun işlemler için StringBuilder nesnesi daha da pratik olacaktır
StringBuilder sb = new StringBuilder();
sb.Append("Benim Adım");
sb.AppendFormat("{0}, yaşım {1}.", name, age);
Console.WriteLine(sb.ToString());

If kullanımı;

//karşılatırma operatörü her zaman true yada false değer döndürür
bool isOpen = true;
if(isOpen == true)
//yerine
if(isOpen) //yazılabilir

//tersi için
if(!isOpen)

//if den sonra tek satır yazılacak ise {} (küme parantez kullanmaya gerek kalmaz)
if(isOpen)
  Console.WriteLine("evet açık"); //gibi

//koşul basit bir işlem üretecek ise ternary tercih edilebilir
//if ile
if(isOpen)
  return "açık";
esle
  return "kapalı";

//ternary ile
return isOpen ? "açık" : "kapalı";

Erişim belirleyiciler;

//sınıf tanımlamaları
internal class Sample1
{
}

//varsayılan internal
class Sample2
{
}
public class Sample
{
    //sınıf için tanımlamalar
    private int number2;
    
    //varsayılan private
    int number1;
}

Attribute kullanımı;  

[AttributeUsage(AttributeTargets.All)]
public class HelpAttribute : System.Attribute 
{
}

//uygularken Attribute yazmaya gerek yok
[Help]
public class Sample
{
}

string[] words1 = { "Don't", "play", "stupid", "with", "me", "I'am", "better", "at", "it" };
string[] words2 = { "I", "said", "Don't", "play", "stupid", "wiv", "me", "I", "be", "betta", "at", "it" };

words1.ToLookup(p => words2.Contains(p)).Dump();

$serviceSite = wget -Uri http://ip-api.com/xml
[xml] $xml = $serviceSite.Content
$ipAddress = $xml.query.query.'#cdata-section'

$ipAddress

//dosya sıkıştırmak için gerekli kütüphane
Add-Type -A System.IO.Compression.FileSystem
//oluşacak zip dosyasının adı işlem tarihi
$filename = [DateTime]::Now.ToString("dd_MM_yyyy") + ".zip"
//veritabanının yedeği oluşturma (windows authentication ile)
Backup-SqlDatabase -ServerInstance "SunucuAdı" -Database "VeriTabanıAdı" -BackupFile "C:\www\site\App_Data\DB.bak"
//App_Data klasörü ile bak dosyası sıkıştırılıyor
[IO.Compression.ZipFile]::CreateFromDirectory('C:\www\site\App_Data', 'c:\www\backup\'+ $filename)
//veritabanı yedeği siliniyor
Remove-Item C:\www\site\DB.bak