Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 17968|Odpověď: 0

[Zdroj] C# kde analýza využití

[Kopírovat odkaz]
Zveřejněno 12.07.2016 11:35:43 | | |

Klauzule where se používá k určení typových omezení, která mohou sloužit jako proměnné pro typové parametry definované v obecných deklaracích.
1. Omezení rozhraní.
Například můžete deklarovat generickou třídu MyGenericClass, takže parametr typu T může implementovat<T> IComparable rozhraní:

public class MyGenericClass<T>, kde T:IComparable { }

2. Omezení základní třídy: Označuje, že typ musí použít zadanou třídu jako základní třídu (nebo samotnou třídu), aby mohla být použita jako parametr typu pro daný generický typ.
Jakmile je takové omezení použito, musí se objevit před všemi ostatními omezeními na typ parametru.
třída MyClassy<T, U>
kde T : třída
kde U : struktur
{
}

Klauzule 3.kde může také obsahovat konstruktorová omezení.
Nový operátor můžete použít k vytvoření instance typového parametru; Typ argument však musí být omezen konstruktorovým omezením new() pro tento účel. Omezení new() dává kompilátoru vědět, že jakýkoli typ argumentu musí mít přístupný konstruktor bez parametrů (nebo výchozí). Například:
public class MyGenericClass <T> , kde T: IComparable, new()
{
Následující řádek není možný bez omezení new():
T položka = nový T();
}
Omezení new() se objevuje na konci klauzule where.

4. Pro více typových parametrů každý typ parametr používá kde klauzuli,
Například:
rozhraní MyI { }
třídní slovník<TKey, TVal>
kde TKey: Srovnávatelný, Spočetný
kde TVal: MyI
{
veřejná prázdnota Přidat (TKey klíč, TVal val)
{
}
}

5. Můžete také připojit omezení k typovým parametrům obecných metod, například:

public bool MyMethod<T>(T t) kde T : IMyInterface { }

Všimněte si, že syntaxe pro popis omezení typových parametrů je stejná jak pro delegáty, tak pro metody:

delegovat T MyDelegate<T>(), kde T : new()





Obecné kde

Obecné kde může kvalifikovat typové parametry. Existuje několik způsobů.

·kde T : struct omezuje parametr typu T musí zdědit ze System.ValueType.

·kde T: třída omezuje typ Parametr T musí být referenční typ, tedy nemůže být zděděn ze System.ValueType.

kde T : new() omezuje typ parametru T, který musí mít výchozího konstruktora

·kde T : NameOfClass omezuje typový parametr, který T musí zdědit z třídy nebo implementovat rozhraní.

Tyto kvalifikátory lze kombinovat, například: veřejná třída Bod kde T : třída, IComparable, new()




Předchozí:c# Nápovědní třída NHibernate
Další:c# http poslouchá vlákna pomocí HttpListener
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com