Aracılığıyla paylaş


IPermission.Intersect(IPermission) Yöntem

Tanım

Geçerli iznin ve belirtilen iznin kesişimi olan bir izin oluşturur ve döndürür.

public:
 System::Security::IPermission ^ Intersect(System::Security::IPermission ^ target);
public System.Security.IPermission? Intersect (System.Security.IPermission? target);
public System.Security.IPermission Intersect (System.Security.IPermission target);
abstract member Intersect : System.Security.IPermission -> System.Security.IPermission
Public Function Intersect (target As IPermission) As IPermission

Parametreler

target
IPermission

Geçerli izinle kesişmek için bir izin. Geçerli izinle aynı türde olmalıdır.

Döndürülenler

Geçerli iznin ve belirtilen iznin kesişimini temsil eden yeni bir izin. Bu yeni izin, null kesişim boşsa olur.

Özel durumlar

target parametresi değil null ve geçerli izinle aynı sınıfın bir örneği değil.

Örnekler

Aşağıdaki kod örneğinde yönteminin uygulanması gösterilmektedir Intersect . Bu kod örneği, sınıfı için IPermission sağlanan daha büyük bir örneğin parçasıdır.

    // Return a new object that contains the intersection 
    // of 'this' and 'target'.
public:
    virtual IPermission^ Intersect(IPermission^ target) override
    {
        // If 'target' is null, return null.
        if (target == nullptr)
        {
            return nullptr;
        }

        // Both objects must be the same type.
        SoundPermission^ soundPerm = VerifyTypeMatch(target);

        // If 'this' and 'target' are unrestricted, 
        // return a new unrestricted permission.
        if (specifiedAsUnrestricted && soundPerm->specifiedAsUnrestricted)
        {
            return Clone(true, SoundPermissionState::PlayAnySound);
        }

        // Calculate the intersected permissions. 
        // If there are none, return null.
        SoundPermissionState minimumPermission = (SoundPermissionState)
            Math::Min((int) stateFlags, (int) soundPerm->stateFlags);
        if ((int)minimumPermission == 0)
        {
            return nullptr;
        }

        // Return a new object with the intersected permission value.
        return Clone(false, minimumPermission);
    }
// Return a new object that contains the intersection of 'this' and 'target'.
public override IPermission Intersect(IPermission target)
{
    // If 'target' is null, return null.
    if (target == null) return null;

    // Both objects must be the same type.
    SoundPermission soundPerm = VerifyTypeMatch(target);

    // If 'this' and 'target' are unrestricted, return a new unrestricted permission.
    if (m_specifiedAsUnrestricted && soundPerm.m_specifiedAsUnrestricted)
        return Clone(true, SoundPermissionState.PlayAnySound);

    // Calculate the intersected permissions. If there are none, return null.
    SoundPermissionState val = (SoundPermissionState)
        Math.Min((Int32)m_flags, (Int32)soundPerm.m_flags);
    if (val == 0) return null;

    // Return a new object with the intersected permission value.
    return Clone(false, val);
}
' Return a new object that contains the intersection of 'this' and 'target'.
Public Overrides Function Intersect(ByVal target As IPermission) As IPermission
    ' If 'target' is null, return null.
    If target Is Nothing Then
        Return Nothing
    End If
    ' Both objects must be the same type.
    Dim soundPerm As SoundPermission = VerifyTypeMatch(target)

    ' If 'this' and 'target' are unrestricted, return a new unrestricted permission.
    If m_specifiedAsUnrestricted AndAlso soundPerm.m_specifiedAsUnrestricted Then
        Return Clone(True, SoundPermissionState.PlayAnySound)
    End If
    ' Calculate the intersected permissions. If there are none, return null.
    Dim val As SoundPermissionState = CType(Math.Min(CType(m_flags, Int32), CType(soundPerm.m_flags, Int32)), SoundPermissionState)
    If val = 0 Then
        Return Nothing
    End If
    ' Return a new object with the intersected permission value.
    Return Clone(False, val)

End Function 'Intersect

Açıklamalar

İki iznin kesişimi, her ikisinin de ortak olarak açıkladıkları işlem kümesini açıklayan bir izindir. Yalnızca her iki özgün izni de geçen bir talep kesişimi geçer.

Yönteminin tüm uygulamaları için aşağıdaki deyimlerin Intersect true olması gerekir. Xve Y olmayan nullnesne başvurularını temsil IPermission eder.

  • X. Kesişim()X, değerine eşit Xbir değer döndürür.

  • X. Kesişim()Y, ile aynı değeri Ydöndürür. Kesişen(X).

  • X. Kesişim()null, döndürür null.

Şunlara uygulanır