Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 17968|Svar: 0

[Källa] C# där användningsanalys

[Kopiera länk]
Publicerad på 2016-07-12 11:35:43 | | |

Where-klausulen används för att specificera typbegränsningar som kan fungera som variabler för typparametrar definierade i generiska deklarationer.
1. Gränssnittsbegränsningar.
Till exempel kan du deklarera en generisk klass MyGenericClass, så att typparametern T kan implementera IComparable-gränssnittet<T>:

offentlig klass MyGenericClass<T> där T:IComparable { }

2. Basklassbegränsning: Anger att en typ måste använda den specificerade klassen som basklass (eller klassen själv) som typparameter för den generiska typen.
När en sådan begränsning har använts måste den förekomma före alla andra begränsningar på parametertypen.
klassen MyClassy<T, U>
där T : klass
där U : struct
{
}

3.where-klausulen kan också inkludera konstruktörsbegränsningar.
Du kan använda den nya operatorn för att skapa en instans av en typparameter; Men typargumentet måste begränsas av konstruktörbegränsningen new() för detta. New()-begränsningen låter kompilatorn veta att varje typ av argument måste ha en tillgänglig parameterlös (eller standard) konstruktör. Till exempel:
offentlig klass MyGenericClass <T> där T: IComparable, new()
{
Följande linje är inte möjlig utan new()-begränsning:
T element = ny T();
}
New()-begränsningen visas i slutet av where-klausulen.

4. För flera typparametrar använder varje typparameter en where-klausul,
Till exempel:
gränssnitt MyI { }
klassordbok<TKey, TVal>
där TKey: IComparabel, IEnumerable
där TVal: MyI
{
offentlig tomrum Tillägg (TKey-nyckel, TVal val)
{
}
}

5. Du kan också fästa begränsningar till typparametrar för generiska metoder, såsom:

public bool MyMethod<T>(T t) där T : IMyInterface { }

Observera att syntaxen för att beskriva typparametrbegränsningar är densamma för både delegater och metoder:

delegat T MyDelegate<T>() där T : new()





Generiskt Där

Generisk Var kan kvalificera typparametrar. Det finns flera sätt.

·där T : struct begränsar typparametern T måste ärva från System.ValueType.

·där T: klass begränsar typ Parametern T måste vara en referenstyp, det vill säga den kan inte ärvas från System.ValueType.

där T : new() begränsar typparametern T måste ha en standardkonstruktör

·där T : NameOfClass begränsar typparametern T måste ärva från en klass eller implementera ett gränssnitt.

Dessa kvalificeringar kan kombineras, såsom: offentlig klass Punkt där T: klass, IComparabel, new()




Föregående:c# NHibernate hjälpklass
Nästa:c# http lyssnar på trådar med HttpListener
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com