2016-02-19 54 views
0

這是一種通常因爲不具有「建設性」而被關閉的問題。但我希望這次不會。我想發送反饋給C#隊的事實,該塊:C中的單行輸出#

AnyOutMethod(out int i, out string str, out object obj); 

請問我的做法有:

int i; 
string str; 
object obj; 
AnyOutMethod(out i, out str, out obj); 

相比,新的風格,我建議這是醜陋任何消極方面?在未來的C#版本中支持這種語法沒有意義嗎?

+0

str和obj的範圍是什麼?直到下一個右括號的地方?或者整個封閉的方法?無論哪種方式,我不會支持這個想法。只是會讓事情變得更加複雜,因爲你可能忽略了一個字段聲明。 –

回答

4

這看起來像declaration expressions,它是爲C#6.0提出的,但沒有完成。 cited reason是他們是...

其特點是仍然有大量的下游工作仍然 。它們也是我們看到的一個特徵,我們將其看作潛在的更大的故事 的開頭:...聲明表達式將形成模式 匹配和解構設施的角落石塊。現在,這些功能將被全部考慮在一起以用於以後的版本。

與該特徵區域相關的當前工作,如引用暗示,似乎在GitHub上標有"pattern matching"標記。 This issue特別似乎映射到你正在提議的現代版本。

自然地,在向語言添加新語法時需要考慮負面因素和細微問題;一般意義上似乎是有利於在廣泛的層面上的功能,但有過整理出的實施細節的關注,主要是

  • 的聲明的變量
  • 可變性的範圍(或沒有)圍繞變量是否被明確賦值(見有關foo is SomeType bar實施例)可變
  • 問題
  • 特徵與更廣泛的模式匹配的特徵如何起着討論

的基礎上粗略通讀的問題。