Aracılığıyla paylaş


in (Genel Değiştirici) (C# Başvurusu)

Genel türde parametreler için in anahtar sözcüğü, type parametresi karşıtı olduğunu belirtir.Kullanabileceğiniz in generic arabirimlerden ve temsilciler bir anahtar sözcük.

Contravariance, genel parametre tarafından belirtilenden daha az türetilmiş bir tür kullanmanıza olanak tanır.Bu varyant arabirimleri uygulayan sınıflar örtük dönüştürme ve temsilci türleri örtük dönüştürme için sağlar.Kovaryans ve genel tür parametrelerine contravariance baþvuru türleri için desteklenir, ancak değer tipleri için desteklenmez.

Yalnızca bir yöntem bağımsız değişkenleri kullanılan türü ve kullanılan yöntemin dönüş türü değil, bir tür genel arabirim veya temsilci karşıtı bildirilebilir.Refve out değişken parametreleri olamaz.

Arabirim türü parametresi tarafından belirtilen süreden daha az türetilmiþ tür bağımsız değişkenleri kabul etmek kendi yöntemleri karşıtı tür parametresi içeren bir arabirim sağlar.Örneğin, çünkü içinde.net Framework 4, IComparer arabirimi, t türü karşıtı, bir nesne atamak için IComparer(Of Person) türü bir nesne için IComparer(Of Employee) , herhangi bir özel dönüştürme yöntemleri kullanmadan türü Employee devralan Person.

Aynı tür, ancak daha az türetilmiş bir genel tür parametresi ile başka bir temsilci karşıtı temsilci atanabilir.

Daha fazla bilgi için bkz. Kovaryans ve Kontravaryans (C# ve Visual Basic).

Örnek

Aşağıdaki örnek, bildirmek, genişletmek ve karşıtı generic bir arabirim uygulamak gösterilmiştir.Ayrıca bu arabirimini uygulayan sınıflar için kapalý dönüþtürme nasıl kullanabileceğinizi gösterir.

// Contravariant interface. 
interface IContravariant<in A> { }

// Extending contravariant interface. 
interface IExtContravariant<in A> : IContravariant<A> { }

// Implementing contravariant interface. 
class Sample<A> : IContravariant<A> { }

class Program
{
    static void Test()
    {
        IContravariant<Object> iobj = new Sample<Object>();
        IContravariant<String> istr = new Sample<String>();

        // You can assign iobj to istr because 
        // the IContravariant interface is contravariant.
        istr = iobj;
    }
}

Aşağıdaki örnek, bildirmek, baþlatmak ve karşıtı genel temsilciyi çağırmak gösterilmiştir.Ayrıca, nasıl dolaylı olarak bir temsilci türü dönüştürebilirsiniz gösterir.

// Contravariant delegate. 
public delegate void DContravariant<in A>(A argument);

// Methods that match the delegate signature. 
public static void SampleControl(Control control)
{ }
public static void SampleButton(Button button)
{ }

public void Test()
{

    // Instantiating the delegates with the methods.
    DContravariant<Control> dControl = SampleControl;
    DContravariant<Button> dButton = SampleButton;

    // You can assign dControl to dButton 
    // because the DContravariant delegate is contravariant.
    dButton = dControl;

    // Invoke the delegate.
    dButton(new Button()); 
}

C# dil belirtiminin

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.

Ayrıca bkz.

Başvuru

out (Genel Değiştirici) (C# Başvurusu)

Değiştiriciler (C# Başvurusu)

Diğer Kaynaklar

Kovaryans ve Kontravaryans (C# ve Visual Basic)