Genel Yöntemlerin Çağrılması hakkında


Jenerikler, bir yöntemi, sınıfı, yapıyı veya arayüzü, üzerinde etkili olduğu kesin veri türüne göre uyarlamanıza olanak tanır. Örneğin, anahtarların ve değerlerin herhangi bir türde olmasına izin veren Hashtable sınıfını kullanmak yerine Dictionary genel sınıfını kullanabilir ve anahtar ve < için izin verilen türleri belirtebilirsiniz. güçlü>değer özellikleri. Jenerikler kodun yeniden kullanılabilirliğini ve tür güvenliğini artırır.

Bazı genel yöntemler için PowerShell, sağlanan bağımsız değişkenlerden çıkarım yaparak bir yöntemin genel bağımsız değişkenlerini bulabilir. Bununla birlikte, bir yöntemin hem genel hem de genel olmayan aşırı yüklemeleri olduğunda veya genel yöntem hiçbir resmi parametre almadığında yöntem çözümlemesi karmaşık olabilir. PowerShell, açık genel yöntem bağımsız değişkenleri olmadan doğru yöntemi çözemeyebilir.

Örneğin, [Array]::Empty(). .NET Array sınıfı hiçbir resmi parametre almayan statik, genel bir Empty() yöntemine sahiptir.

PowerShell 7.3'ten önce, uygun yöntem çözümlemesini sağlamak için .NET yansımasını kullanarak karmaşık geçici çözümler kullanmanız gerekiyordu. Örnek için Lee Holmes'un PowerShell'deki genel olmayan sınıflarda genel yöntemleri çağırma blog gönderisine bakın.

PowerShell 7.3'ten başlayarak genel bir yöntemin türlerini belirtebilirsiniz.

Sözdizimi

Genel yöntem, iki parametre listesine sahip bir yöntemdir: genel türlerin listesi ve yöntem argümanlarının listesi.

Aşağıdaki örneklerde genel bir yönteme erişim için yeni PowerShell sözdizimi gösterilmektedir:

# static generic methods
[type_name]::MethodName[generic_type_arguments](method_arguments)

# instance generic methods
$object.MethodName[generic_type_arguments](method_arguments)

generic_type_arguments, [string, int] gibi tek bir tür veya virgülle ayrılmış tür listesi olabilir; buna $obj.MethodName[string gibi diğer genel türler de dahildir. , System.Collections.Generic.Dictionary[string, int]]()

method_arguments sıfır veya daha fazla öğe olabilir.

Daha fazla bilgi için bkz. .NET'teki Jenerikler.

Örnek

Bu örnekte, bir tamsayı listesi oluşturup, değerleri numaralandırmak ve bunları yeni bir değere dönüştürmek için System.Linq.Enumerable sınıfını kullanıyoruz.

$list değişkeni yalnızca tamsayılar içerebilen genel bir List nesnesidir. List, oluşturduğunuzda üyelerinin türünü belirtmenize olanak tanıyan genel bir sınıftır. [System.Linq.Enumerable]::Select(T1,T2), iki genel tür parametresi ve iki resmi değer parametresi gerektiren genel bir yöntemdir.

[System.Collections.Generic.List[int]]$list = @( 1, 2, 3, 4, 5 )
$result = [System.Linq.Enumerable]::Select[int, float](
    $list,
    [Func[int, float]]{
        param($item)
        [math]::Pow($item, 3)
    }
)
$result

Çıktı, 3'ün gücüne yükseltilmiş her değeri gösterir.

1
8
27
64
125

İlgili makaleler



Tüm hakları saklıdır. © A-D.site • 2023-2024