Introduction
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#.
Article
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:
- Roll your own one,
- Use another language which implements the desired
functionality,
- Use a commercially available COM objects, or
- 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.
Conclusion
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.