Tips : Leveraging VB.Net Base Classes


Multiple language implementation has an inherited powerful advantages.  The .Net unify class architecture model allows .Net languages to leverage class libraries implemented in other class libraries.   This article shows you how to leverage the power of VB.Net Financial base class library using C#.


Since no language implementation can provides classes for every possible thing, C# is not the exception, when it comes to financial functions, C# nor the Math class provides you any implementation of  financial classes or functions.  If for example you need to develop a mortgage loan calculation program using C#, your basic choices are: 

  1. Roll your own one,
  2. Use another language which implements the desired functionality,
  3. Use a commercially available COM objects, or
  4. Leverage the base class library of another .Net language.

In this article I'll show you a WinForm mortgage loan calculator using a home grown Pmt formula (choice #1), and I'll leverage the financial base class implemented in VB.Net (choice #4).

Running the sample code should display a form with a principal amount = 10000, an interest rate = 8, and a duration in months = 36.  By pressing the PMT button, the calculated PMT by the C# code and financial base class will show at the bottom of the window.


The actual code that executes:

double P = textBox1.Text.ToDouble();
double I = textBox2.Text.ToDouble()/1200;
double M = textBox3.Text.ToDouble();
Cpayment.Text = ((double)(P * (I/(1 - Math.Pow((1 + I), -M))))).ToString();
VBpayment.Text = Math.Abs(Financial.PMT(I,M,P,0,0)).ToString(); 

Now, to have access to the Financial.PMT method, in the Solution Explorer you need to add Microsoft Visual Basic as a reference to your project (see below), and then you may use the using declarative statement as follows:

using Microsoft.VisualBasic;

Performance vs. Convenience

Although the C# implementation of PMT is a bit better performer than the PMT VB Financial PMT function by a 3 to 8 microseconds in large iteration (10,000 thru 500,000), the cost of development plus maintenance of the C# implementation of all financial functions will outweigh the diminished gain in cycles.


Having access to .Net languages base classes from any language is a powerful concept.  Experiment with other .Net languages and discover how easy you can leverage the concept of multi-language implementation that .Net has brought to us.