Perché è disponibile un metodo Distinct() su HashSet quando non possono comunque contenere duplicati?Perché gli hash C# hanno un metodo Distinct()
6
A
risposta
13
Il metodo Distinct
non è nello HashSet<>
, ma lo IEnumerable<>
implementato dallo HashSet<>
.
I metodi di estensione non possono essere "omessi" da determinati tipi. Una volta aggiunto a un tipo, tutto il tipo e tutti i derivati avranno il metodo di estensione.
Solo per dimostrare, se hai esteso object
rifiuti tutto se hai aggiunto lo spazio dei nomi rilevante. Quindi non andare aggiungendo:
namespace System
{
public static class ObjectExtensions
{
public static void Garbage(this object foo)
{
}
}
}
Problemi correlati
- 1. Gli aggregati C++ non hanno funzioni virtuali?
- 2. Perché due nuovi oggetti non hanno lo stesso codice hash?
- 3. Perché gli hash SHA256 terminano con "="?
- 4. Perché gli input di testo hanno un riempimento extra?
- 5. Gli XForm hanno un successore?
- 6. C# lista dove gli articoli hanno un TTL
- 7. Le password simili hanno hash simili?
- 8. Gli oggetti modello hanno interfacce?
- 9. Unisci gli hash con gli array con Hash :: Merge
- 10. Perché gli eventi non hanno tipi di ritorno in .NET?
- 11. Perché "SELECT DISTINCT a, b FROM ..." restituisce meno record di "SELECT DISTINCT A + '|' + B DA ... "?
- 12. Perché i tipi primitivi in C# hanno le proprie operazioni?
- 13. Perché Java e C# hanno operatori di bitshifts?
- 14. Perché LINQ non include una parola chiave `distinct`?
- 15. Come unire due hash che hanno stesse chiavi in rubino
- 16. Perché ARC mantiene gli argomenti del metodo?
- 17. Perché lapplicazione non funziona su oggetti S4 che hanno un metodo as.list.default?
- 18. DISTINCT() e OrderBy problema
- 19. DynamoDB: Cancella tutti gli elementi che hanno lo stesso Hash Key
- 20. Perché hanno usato questa sintassi C# per creare un elenco di collegamenti in ASP.NET MVC 2?
- 21. Come creare un semplice valore hash breve? C#
- 22. C# LINQ conteggio elementi con DISTINCT
- 23. Perché C++ 11 hanno `make_shared` ma non` make_unique`
- 24. Ruby "count" metodo per hash
- 25. Quando si scontrano gli hash?
- 26. Come chiamare un metodo Objective-C da un metodo C?
- 27. impatto SEO usando gli hash?
- 28. Perché base64 un hash sha1/sha256?
- 29. I blocchi C++ {} hanno un impatto negativo
- 30. Accettando sia un hash o un array di hash come argomenti a un metodo rubino
Per chiarire 'Distinct' è un metodo di estensione su' 'IEnumerable, che' 'HashSet accade da implementare. –
bluevector
@jonnyGold Sì, ho capito, ho appena modificato la mia risposta prima del tuo commento. Grazie per il chiarimento comunque. –
Per essere ancora più preciso, 'Distinct' è un metodo di estensione, che estende' IEnumerable <> 'e risiede nella classe statica' System.Linq.Enumerable'. –