cermo-lit.ru

  

Bästa artiklarna:

  
Main / Välj många linq null var

Välj många linq null var

GitHub är hem för över 36 miljoner utvecklare som arbetar tillsammans för att vara värd och granska kod, hantera projekt och bygga programvara tillsammans. Har du en fråga om detta projekt? Registrera dig för ett gratis GitHub-konto för att öppna ett problem och kontakta dess underhållare och samhället. Redan på GitHub? Logga in på ditt konto. I den aktuella versionen Enumerable. SelectMany upplever ett NullReferenceException när väljaren returnerar null. Detta är inte önskvärt eftersom det är en förvirrande krasch med en "förbjuden" undantagstyp i BCL-kod.

Detta bör ändras. Det säkraste tillvägagångssättet är att kasta ett undantag som förklarar att användaren har tillhandahållit en ogiltig väljare som inte följer kontraktet. Dessutom bör dokumentationen innehålla kravet på att inte returnera null.

Ett alternativt tillvägagångssätt skulle vara att behandla null som en tom sekvens. Jag är inte säker på vilken lösning som är bättre. Ibland skulle en tom sekvens vara väldigt bekväm. Ibland skulle detta dölja ett fel. Det är också oklart att detta kan göras på grund av kompatibilitetsproblem. Jag tror att kasta en annan undantagstyp skulle vara tillräckligt säkert för att ta ändringen. Vi tror inte att värdet är värt att den extra kontrollen har liten effekt. Vi tror inte att scenariot för att skicka null till SelectMany är så vanligt i applikationer som körs.

Vi är överens om att det kan vara lite bättre i utvecklingstiden, men det är ungefär så mycket värde som vi kan tänka oss. Om du inte håller med, lämna gärna ytterligare information. Det är att dölja en buggdel som betyder mest för mig. Om jag förväntar mig noll vilket jag tycker borde vara sällsynt eftersom noll och tom lista inte liknar semantiskt ur mitt perspektiv, skulle jag hellre göra den förväntningen uttrycklig via. Jag skulle vilja ha den här funktionen.

Eller åtminstone ha förlängningsmetod EmptyIfNull för bekvämt. Thaina gå för det. Det är bara vettigt att lägga till BCL om de flesta har det här problemet. Finns det bevis för det?

Jag kan inte tänka mig ett enda annat sådant fall de kan existera. Jag personligen värdesätter denna ramkvalitet mycket. Jag förstår argumentet om kostnad, men är det verkligen värt inkonsekvensen? Det tog mig ett tag att spåra felet som ledde till den här biljetten.

Jag letade efter lambda efter möjliga orsaker. Jag vet vad du säger, men jag tror fortfarande att NRE är konsekvent och att tolerera null är inkonsekvent med resten av C. Null och tom är inte automatiskt samma semantiskt. Jag förstår att vi inte borde göra brytande förändringar så vi borde ha en ny funktion för detta beteende för bekvämt. Jag skulle göra det för att helt enkelt åtgärda detta. Jag tror att perf-förlusten från denna nollkontroll skulle vara väldigt liten och blek i jämförelse med andra perf-förluster som rutinmässigt accepteras av LINQ för att förbättra användbarheten.

VSadov för att se ovanstående kommentarer. Med ett undantag som benhuvud som NRE, om det kommer från användarkod är det inte bra kod som beror på det utan dålig kod. Jag föredrar att få en NRE framför felaktigt men inte kastande beteende.

Är vi säkra på att denna utplattning alltid är den bästa saken? Jag skulle inte rekommendera utplattning utan snarare att kasta ett undantag utan ben. Undantaget kommer från BCL-kod, inte från användarkod. Hoppa till innehåll. Avvisa Gå med i GitHub idag GitHub är hem för över 36 miljoner utvecklare som arbetar tillsammans för att vara värd och granska kod, hantera projekt och bygga programvara tillsammans. Bli Medlem. Nytt problem. Kopiera länk Citat svar. Denna kommentar har minimerats. Logga in för att se.

Linq-etikett 1 september 2016. Framtida, 1. Jag förstår att vi inte ska göra brytande förändringar så istället bör vi ha en ny funktion för detta beteende för att det är bekvämt kanske 'SelectFlatten'? Jag tror att detta beteende är mycket mer föredraget än nuvarande utvalda många.

Registrera dig gratis för att delta i denna konversation på GitHub. Har du redan ett konto? Logga in för att kommentera. Du loggade in med en annan flik eller ett annat fönster. Ladda om för att uppdatera din session. Du loggade ut på en annan flik eller ett annat fönster.

(с) 2019 cermo-lit.ru