请为我解读这个C#表达式

时间:2012-05-11 21:26:42

标签: c#

这意味着什么?

var cdParams = (includeUniversals) 
? new[] {pageDictionary[pageName], pageDictionary[CNNService.UniversalPage.Name]}
: new[] {pageDictionary[pageName]};

基本上归结为什么呢?是什么意思和新[]意味着什么?

5 个答案:

答案 0 :(得分:7)

大致相当于:

Foo[] cdParams;  // Use the correct type instead of Foo. NB: var won't work here.
if (includeUniversals) { 
    dParams = new Foo[2];
    dParams[0] = pageDictionary[pageName];
    dParams[1] = pageDictionary[CNNService.UniversalPage.Name];
} else {
    dParams = new Foo[1];
    dParams[0] = pageDictionary[pageName];
}

答案 1 :(得分:5)

这是一个ternary expression。如果条件为真,则执行第一种情况。如果为false,则执行第二种情况。

答案 2 :(得分:3)

如果布尔值includeUniversals的计算结果为true,则返回包含pageDictionary[pageName]pageDictionary[CNNService.UniversalPage.Name]的新匿名对象数组,否则返回包含pageDictionary[pageName]的新匿名对象数组

那你在找什么?

答案 3 :(得分:2)

var cdParams // type inferred by the compiler
 = (includeUniversals) ? // if includeUniversals is true

// then cdParams = new a new array with 2 values coming from a dictionary
 new[] { pageDictionary[pageName], pageDictionary[CNNService.UniversalPage.Name] }

// otherwise, cdParams = a new array with one value
: new[] { pageDictionary[pageName] };

请参阅ternary operatorimplicit array typing

答案 4 :(得分:0)

取决于includeUniversalscdParams将是一个包含两个值的数组,即pageDictionary[pageName]pageDictionary[CNNService.UniversalPage.Name] - 或者,它将是一个包含一个值的数组它,即pageDictionary[pageName]