我正在將一些經典的VB6代碼移植到C#,並且偶然發現了PV
函數的用法。PV函數和將VB6移植到C#
我感覺不對,包括對Microsoft.VisualBasic程序集的引用。這是通常做的事,還是應該探索更多的選擇。我想到的下一個想法是在Reflector中探索這個PV函數。
我正在將一些經典的VB6代碼移植到C#,並且偶然發現了PV
函數的用法。PV函數和將VB6移植到C#
我感覺不對,包括對Microsoft.VisualBasic程序集的引用。這是通常做的事,還是應該探索更多的選擇。我想到的下一個想法是在Reflector中探索這個PV函數。
使用來自C#和VB.NET的Microsoft.VisualBasic已在this question下進行了徹底討論。 Microsoft.VisualBasic命名空間爲fully supported,並且只要.Net在附近即可。沒有理由避免它。
編輯:它告訴,在打字時,對方對此問題的回答是函數的不正確重新實施,並從代碼畫廊一人帶不支持庫。加油吧,微軟需要一個真正的major event才能從VB中刪除財務功能。
它爲Microsoft.VisualBasic.Compatibility,這是專爲在VB6升級嚮導使用,編輯一個不同的故事現在已經是.NET 4標記爲已過時(我的預言應驗了),和不應該用於新的開發。在刪除對此的引用方面會有一些優勢,但是我個人可能會嘗試通過首先引用.Net 3.5來實現完全工作的端口。
相當直截了當地複製在C#
public static double PV(double Rate, int nPer, double Pmt, double FV, bool Type)
{
double ann = Math.Pow(1 + Rate, nPer);
return -(FV + Pmt * (1 + (Type ? Rate : 0)) * ((ann - 1)/Rate))/ann;
}
只是一個公式微軟provides的重新安排。
這幾乎是微軟公式的重新排列,除非rate = 0。這是當你的版本分爲零,VB6和Microsoft.VisualBasic返回'-fv - (pmt * nper)'。甚至在從網頁編碼公式時也存在缺陷。這強化了我的答案 - 爲了憐憫,只是使用Microsoft.VisualBasic **並繼續爲窮人老用戶實現其他功能。 – MarkJ 2009-09-25 08:08:23
與此同意100%。這種不願意使用微軟支持的庫的來源是什麼?它只是「ewwww ......它說VB」的心態嗎? WTF?微軟寫了VB6,C#,然後爲了這個目的而免費提供了Microsoft.VisualBasic命名空間。還有人猶豫使用它。無論如何 - 把你的機會與其他「非VB,因此更好」的選擇。 – JeffK 2009-10-01 19:01:13
只需添加:在一天結束時,它全部是IL。我可以用C#,Visual Basic.NET,IronPython和Boo編寫東西,並將它們全部扔進Blender(=編譯器)中,然後檢索不知道以前是什麼的IL。 – 2010-03-22 20:34:41
在C#開發人員之間使用VB存在一個恥辱,因此,他們以VisualBasic爲名,他們不喜歡它,因爲他們認爲他們是用VB編程的。也許MS應該重命名爲'Microsoft.ReallyUsefulAndFullySupportedFunctions',每個人都會很開心 – 2012-07-19 08:03:41