2009-09-24 96 views
6

我正在將一些經典的VB6代碼移植到C#,並且偶然發現了PV函數的用法。PV函數和將VB6移植到C#

我感覺不對,包括對Microsoft.VisualBasic程序集的引用。這是通常做的事,還是應該探索更多的選擇。我想到的下一個想法是在Reflector中探索這個PV函數。

回答

10

使用來自C#和VB.NET的Microsoft.VisualBasic已在this question下進行了徹底討論。 Microsoft.VisualBasic命名空間爲fully supported,並且只要.Net在附近即可。沒有理由避免它。

編輯:它告訴,在打字時,對方對此問題的回答是函數的不正確重新實施,並從代碼畫廊一人帶不支持庫。加油吧,微軟需要一個真正的major event才能從VB中刪除財務功能。

它爲Microsoft.VisualBasic.Compatibility,這是專爲在VB6升級嚮導使用,編輯一個不同的故事現在已經是.NET 4標記爲已過時(我的預言應驗了),和不應該用於新的開發。在刪除對此的引用方面會有一些優勢,但是我個人可能會嘗試通過首先引用.Net 3.5來實現完全工作的端口。

+3

與此同意100%。這種不願意使用微軟支持的庫的來源是什麼?它只是「ewwww ......它說VB」的心態嗎? WTF?微軟寫了VB6,C#,然後爲了這個目的而免費提供了Microsoft.VisualBasic命名空間。還有人猶豫使用它。無論如何 - 把你的機會與其他「非VB,因此更好」的選擇。 – JeffK 2009-10-01 19:01:13

+1

只需添加:在一天結束時,它全部是IL。我可以用C#,Visual Basic.NET,IronPython和Boo編寫東西,並將它們全部扔進Blender(=編譯器)中,然後檢索不知道以前是什麼的IL。 – 2010-03-22 20:34:41

+4

在C#開發人員之間使用VB存在一個恥辱,因此,他們以VisualBasic爲名,他們不喜歡它,因爲他們認爲他們是用VB編程的。也許MS應該重命名爲'Microsoft.ReallyUsefulAndFullySupportedFunctions',每個人都會很開心 – 2012-07-19 08:03:41

1

你可以使用這個庫,在F#

Library

複製Excel函數它PV是現值。我用過一次或兩次。只需將其放入並添加參考。

+1

嗯似乎有點冒險依靠CTP的語言,但我想我寧願這樣做不是引用Microsoft.VisualBasic程序庫 – Dave 2009-09-24 14:25:00

+0

沒錯,當我使用它,它是爲了避免Excel自動化和引用的Excel – Gratzy 2009-09-24 14:26:51

+0

的「NotStandAlone」版本幾乎是1兆......幾乎誘惑,只是撿從反射器的PV功能,但我給這個一杆 – Dave 2009-09-24 14:40:50

3

相當直截了當地複製在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的重新安排。

+3

這幾乎是微軟公式的重新排列,除非rate = 0。這是當你的版本分爲零,VB6和Microsoft.VisualBasic返回'-fv - (pmt * nper)'。甚至在從網頁編碼公式時也存在缺陷。這強化了我的答案 - 爲了憐憫,只是使用Microsoft.VisualBasic **並繼續爲窮人老用戶實現其他功能。 – MarkJ 2009-09-25 08:08:23