VB中的“Financial.Pmt”等同于C#?

Microsoft.VisualBasic程序集中有一个内置函数。 我可以在VB中使用它,如下所示:

Financial.Pmt((dAPR / 100) / 12, iNumberOfPayments, dLoanAmount) * -1 

我目前的项目是C#,我需要使用这个function。 网上的答案说只是添加命名空间和程序集并在C#中使用相同的 – 但这不是真的! C#仍然无法识别此公式。

那么如何在C#中使用Financial.Pmt(或者甚至可能将源代码移植到它)? 谢谢你的帮助。

像这样:

 using System; using Microsoft.VisualBasic; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { double dAPR = 2; Int32 iNumberOfPayments = 12; double dLoanAmount = 10000; Console.WriteLine(Financial.Pmt((dAPR / 100) / 12, iNumberOfPayments, dLoanAmount, 0, DueDate.EndOfPeriod) * -1); Console.ReadLine(); } } } 
  • 像Joel所说 ,添加对Microsoft.VisualBasic程序集的引用。
  • 就像Rup在评论中所说,你必须提供第4和第5个参数的默认值。

在适当的时候使用C#中的Microsoft.VisualBasic 。 它是.Net中完全支持的核心库,它包含一些有用的财务function。

您必须在Visual Studio中为项目添加对Microsoft.VisualBasic.dll程序集的引用。 这与using Microsoft.VisualBasic; 源文件顶部的指令。 你必须做两个步骤。

如前所述,您可以使用Microsoft.VisualBasic程序集,它提供了大量的VB6function。 但说实话,如果你更普遍地考虑财务计算,你应该考虑查看.NET的Excel财务function 。

对于那些不喜欢导入VB函数的人。 这是PMT的纯C#代码

 public static double PMT(double yearlyInterestRate, int totalNumberOfMonths, double loanAmount) { var rate = (double) yearlyInterestRate / 100 / 12; var denominator = Math.Pow((1 + rate), totalNumberOfMonths) - 1; return (rate + (rate/denominator)) * loanAmount; } 

用法:

 PMT(7, 360, 120000); // Result: 798.36 PMT(4.5, 360, 137500.47); // Result: 696.69 PMT(4.13, 360, 61520); // Result: 298.33 PMT(6.38, 360, 89200); // Result: 556.78