假設default算術溢出(未)檢查,下面的代碼是否保證外部檢查/未檢查的上下文影響其內部創建的lambdas的行爲?
Action<Int32[]> action;
checked
{
action = array =>
Console.WriteLine(array[0] + array[1]);
}
var items = new[]
{
Int32.MaxValue,
Int32.MaxValue
};
action(items);
將導致
System.OverflowException:算術運算導致溢出..
如果我們將項目設置設置爲/checked,並將checked {
替換爲unchecked {
,則不會拋出異常。
那麼,我們可以依靠這種行爲,還是對array => unchecked (array[0] + array[1])
更安全?
你想保證C#編譯器沒有任何錯誤? github網站列出了*一萬個問題,其中三分之一仍然是開放的。碰巧遇到[這一個](https://github.com/dotnet/roslyn/issues/18446),當我看着剛纔:) :) –
@HansPassant據我所見,這裏沒有錯誤 - 一切正常罰款和相當邏輯。但是否可以依靠這種行爲作爲標準,這讓我很困擾。 [@InBeetween的答案](http://stackoverflow.com/a/43225470/3745022)中提到的規範有點含糊不清,不管lambda是否保證受到影響仍然存在一些疑問。 –
當它不起作用時就回來,你有一個具體問題向我們展示,SO總是在附近。 –