c# - Perché VS 2008 non visualizza i metodi di estensione in Intellisense per la classe String




visual-studio-2008 extension-methods (2)

Poiché String implementa IEnumerable<char> , mi aspettavo di vedere i metodi di estensione Enumerable in Intellisense, ad esempio, durante la digitazione del periodo in

String s = "asdf";
s.

Mi aspettavo di vedere. .Select<char>(...) , .ToList<char>() , ecc. Sono rimasto sorpreso di vedere che i metodi di estensione funzionano effettivamente sulla classe string, semplicemente non lo fanno presentarsi in Intellisense. qualcuno sà perche è cosi? Questo potrebbe essere correlato a questa domanda.


È di design esplicito. Il problema è che mentre String implementa sicuramente IEnumerable<T> , la maggior parte delle persone non ci pensa, o, soprattutto, la usa in quel modo.

La stringa ha un numero piuttosto basso di metodi. Inizialmente non abbiamo filtrato i metodi di estensione su String e il risultato è stato un sacco di feedback negativi. Ha quasi triplicato il numero di metodi a volte con le giuste importazioni. Con tutti i metodi di estensione visualizzati, le persone spesso non potevano vedere il metodo String che cercavano nel rumore.

String è un ... tipo semplice ed è meglio vederlo in questo modo :)

È ancora completamente possibile chiamare un metodo di estensione su stringa. Probabilmente non si presenterà in intellisense.

EDIT: String ha in realtà alcuni metodi. Ma poiché molti di loro sono sovraccarichi, essi crollano nell'intelligenza.


Dovrebbe.

For example you can write it public static string myExtensionMethod(this String yuppi){
}

Quindi dovrebbe essere lì.





intellisense