c# - Unexpected behavior using Enumerable.Empty<string>() -


i expect enumerable.empty<string>() return empty array of strings. instead, appears return array single null value. breaks other linq operators defaultifempty, since enumerable not, in fact, empty. doesn't seem documented anywhere, i'm wondering if i'm missing (99% probability).

gameobject class

 public gameobject(string id,ienumerable<string> keywords) {         if (string.isnullorwhitespace(id)) {             throw new argumentexception("invalid", "id");         }         if (keywords==null) {             throw new argumentexception("invalid", "keywords");         }         if (keywords.defaultifempty() == null) { //this line doesn't work correctly.             throw new argumentexception("invalid", "keywords");         }         if (keywords.any(kw => string.isnullorwhitespace(kw))) {             throw new argumentexception("invalid", "keywords");         }          _id = id;         _keywords = new hashset<string>(keywords);     } 

test

    [testmethod]     [expectedexception(typeof(argumentexception))]     public void emptykeywords() {         gameobject test = new gameobject("test",system.linq.enumerable.empty<string>());     } 

it looks expect condition:

keywords.defaultifempty() == null 

to evaluate true. defaultifempty returns singleton sequence containing default element type (string in case) if source sequence empty. therefore return sequence containing null. not null condition returns false.


Comments

Popular posts from this blog

html - Outlook 2010 Anchor (url/address/link) -

javascript - Why does running this loop 9 times take 100x longer than running it 8 times? -

Getting gateway time-out Rails app with Nginx + Puma running on Digital Ocean -