2016-02-03 55 views
2

我有一個分配給一個動態viewbag變量,它必須的整數(是的,整數,而不分數部分,它打破我使用的庫):爲什麼根據ReSharper將double-int轉換分配給動態變量冗餘?

ViewBag.Autosubmit = (int)(SomeDate.Subtract(new DateTime(1970, 1, 1)).TotalSeconds); 

TimeSpan.TotalSeconds返回一個double,並使用它,我將它投入int。但ReSharper說,鑄造到int是多餘的。如果我沒有投射,則數字保持爲雙倍,並且我的頁面無法正常工作。

爲什麼ReSharper告訴我演員是多餘的?

+1

你可以嘗試不使用viewbag,只是做'double a = 10.0;動態d1 = a;動態d2 =(int)a;'看看它是否告訴你相同的?另外,您正在使用哪個版本的ReSharper? –

+1

Resharper根本不應該給出這個警告。看起來像一個錯誤。不是一個簡單的參考轉換的演員不應該被標記,因爲它可以顯然不是多餘的,因爲你的情況。 – InBetween

+0

無法重現。您使用的是什麼版本的MVC和R#? – AakashM

回答

-1

我想這是因爲中投是多餘的,只要C#來講..你是鑄造,但然後把它變成一個動態的,不關心如果一個int或雙..

如果你把它明確地轉換爲int ..喜歡的Lasse五卡爾森提到

int autoSubmit = (int)(SomeDate.Subtract(new DateTime(1970, 1, 1)).TotalSeconds); 
ViewBag.Autosubmit = autoSubmit; 

我相信那麼消息會自行消失。

+1

「我認爲這是因爲就c#而言,演員陣容是多餘的」。這種肯定是絕對錯誤的。在給定的上下文中,將'Tiger'投射到'Animal'可能是多餘的「就c#而言」而言,將'double'轉換爲'int'不會以任何方式冗餘;您正在創建一個絕對新的對象,而不是簡單地更改引用的類型。 Resharper不應該給出這個警告。 – InBetween

+0

不,它實際上沒有錯 - 在這一點...只要resharper可以告訴......基於C#語法(所以「就C#而言」)...演員是多餘的...當通過它是動態的,就像這個片斷所關心的一樣。冗餘......爲了使它不是多餘的,你需要更加明確,你必須讓它知道你的意圖是什麼......看起來你對我在回答問題的方式方面存在疑問,這本身並沒有使事實上不正確?沒有你提供關於你的意圖的更多信息,resharper應該怎麼知道? –

+0

無論你想穿什麼樣的衣服,你的回答都是錯誤的。不是簡單參考轉換的演員不能被標記爲多餘的,因爲它不那麼簡單。這種情況很明顯,我不確定你在這裏討論什麼,代碼非常好,警告不是。讓Resharper的生活更輕鬆並非任何人的工作。它應該足夠聰明,知道什麼時候演員不是一個簡單的參考轉換,如果不是那麼它是一個錯誤或誤報,無論你喜歡命名它。 – InBetween

相關問題