2014-10-05 80 views
-4

在組件庫的代碼審查中,我發現需要一些每月每天計算的語法。C#操作順序語法解釋

簡化的語法是這樣的:

int preDays = (new int[] { 0, 1, 2, 3, 4, 5, 6 })[3] - 2; 

[3]-2是變量。在上面的例子中,preDays的結果是1.

有人請解釋我們如何得出這個結果嗎?

+2

什麼你難道不明白,特別是?它只是創建一個數組獲取第四個元素,並從中減去2。 – 2014-10-05 14:55:42

+0

'(new int [] {0,1,2,3,4,5,6})[n]'對於'0 <= n <7'將始終爲'n',否則爲'ArgumentOutOfRangeException'。這個代碼最好是... *次優。 – 2014-10-05 14:57:28

+1

看來這是一個可怕的地方問一個問題! – 2014-10-05 15:24:44

回答

1

將代碼分解爲各個部分。就像在數學中一樣,我們首先在括號內執行操作,因此您要創建一個值爲0到6的整數數組。接下來,代碼查看索引3(C#中的數組是基於0的)。索引3處的值爲3.最後,我們從3中減去2得到1並將其分配給preDays。

你可以認爲它像這樣:

int[] myArray = { 0, 1, 2, 3, 4, 5, 6}; 
int myValue = myArray[3]; // Value is 3 
int preDays = myValue - 2; // Value is 1 
+1

感謝您的回答,我只是搞定了一個二維數組。 – 2014-10-05 15:05:30

1

要創建陣列的製造在同一行的算術運算和假定
指數在c#has a zero as base所以如果算上0,1,2,3您將在4情況下,陣列的得到的值3,從而3 minus 2你將得到1

所以把它像

var myArray = new int[] { 0, 1, 2, 3, 4, 5, 6 }; 
int myValue = array[3]; //3 
int preDays = value - 2; 
1

這是否幫助:

var array = new int[] { 0, 1, 2, 3, 4, 5, 6 }; 
int value = array[3]; //3 
int preDays = value - 2; //1 
1

這一個在我看來非常簡單:

中的()有定義一個新的匿名數組。由七個元素組成的數組,分別爲0,1,2,3,4,5和6.從這個數組中獲取第四個元素。 ([3]引用第四個元素作爲從[0]開始的計數,指的是第一個元素)。

陣列的第四個元素是3,所以表達式(new int[] { 0, 1, 2, 3, 4, 5, 6 })[3]解析爲3.減去2從3使preDays成填充有1

1

int preDays = (new int[] { 0, 1, 2, 3, 4, 5, 6 })[3] - 2;

(new int[] { 0, 1, 2, 3, 4, 5, 6 })將創建的臨時整數數組大小爲7並且具有值(0,1,2,3,4,5,6)。

(new int[] { 0, 1, 2, 3, 4, 5, 6 })[3]將提取4項即值3

(new int[] { 0, 1, 2, 3, 4, 5, 6 })[3] - 2(與指數3項),將執行3 - 2 = 1