PowerShell 5.0’da yeni “class” anahtar kelimesiyle sınıf tanımı

Womanne

Member
PowerShell’in sonraki sürümünde, sınıflar doğrudan PowerShell betik dili sözdiziminde tanımlanabilir.


Pek çok Windows PowerShell kullanıcısı, özellikle de nesne yönelimli dil geliştiricileri olarak çalışanlar, kendi sınıflarını doğrudan Windows PowerShell’deki PowerShell betik dili sözdiziminde tanımlama yeteneğini kaybetmiştir. Şimdiye kadar, PowerShell betiklerine katıştırabileceğiniz C# veya Visual Basic .NET sözdizimini kullanmanız gerekiyordu.

PowerShell sürüm 5.0 artık eksik dil özelliklerini sunuyor. 4 Eylül 2014’te yayınlanan PowerShell 5.0’ın ikinci yayın öncesi sürümü, new anahtar sözcüğünü sunar Sınıf. Aşağıdaki örnek, statik üyeler, örnek üyeler, oluşturucu ve yöntemler ile sınıf örneklemesi gibi bazı tipik kullanım senaryolarını gösterir.

Ön sürümde hala bazı sınırlamalar olduğuna dikkat edilmelidir, örneğin:

  • Tüm sınıf üyeleri herkese açıktır.
  • Yapıcılar birbirlerini arayamazlar.
  • New-Object komutlarıyla somutlaştırma, nesneleri kullanırken sorunlara yol açar (hata: ThreadLocal nesnesi silindi).
indiriliyor

# Definition einer Klasse
class Benutzer
{
# Statische Mitglieder
static [Int64] $Anzahl
# Instanzmitglieder
[string] $Benutzername
[int32] $ID
[DateTime] $Datum
# Interne Methode, die man aber in der aktuellen Version nicht verstecken kann
[void] Init([int32] $neueid)
{
$id = $neueid
"Neuer Benutzer erzeugt!"
}

# Konstruktor 1: parameterlos
Benutzer()
{
[Benutzer]::Anzahl = [Benutzer]::Anzahl + 1
$this.Init([Benutzer]::Anzahl)
}

# Konstruktor 2: mit Parameter
Benutzer($neueid)
{
$this.Init($neueid)
}

# öffentliche Methode
[string] GetInfo([bool] $mitDatum)
{
if ($mitDatum) {
return "$($ID): $benutzername wurde am
$($Datum.ToShortDateString()) als Benutzer angelegt."
}
else
{
return "$($ID): $benutzername"
}
}
}
# Objketinstanziierung
$b = [Benutzer]::new(123) # new-object Benutzer führt noch zu Fehler bei Methodenausführung!

# Befüllen des Objekts
$b.Benutzername = "Holger Schwichtenberg"
$b.Datum = Get-Date "8.9.2014"

# Ausgaben
$b.Datum
$b.GetInfo($true)


()






Haberin Sonu
 
Üst