O'Reilly logo

Programming F# 3.0, 2nd Edition by Chris Smith

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Appendix B. F# Interop

This book shows how F# can be a great language for helping you to be more productive, while seamlessly integrating with the existing .NET stack. Although it is true that F# is a great language, the word seamlessly may need to be qualified.

The dominant languages used in .NET today are C# and Visual Basic .NET (VB.NET), and although in F# you can write and call into object-oriented assemblies to interact with C# and VB.NET code, some concepts may get lost in translation.

This appendix is focused on how to ease interop with F#. By the end of this appendix, you’ll be able to identify problem areas when doing multilanguage programming. In addition, you’ll be able to have your F# interoperate with unmanaged (native) code as well by using Platform Invoke and COM.

Note

Although F# allows you to work with both C# and Visual Basic .NET, in this appendix, I’m just going to refer to C# for convenience. Whenever you see the term C#, you can replace it with the phrase C# or Visual Basic .NET depending on your preference.

.NET Interop

The key to interoperation between .NET languages is to make sure that the types and methods in the public surface area of a class library are available to all languages consuming the code. Intuitively, if a library exposes constructs that are not native to the consuming language, things can look a little strange. Or, even worse, the library exposes different idioms for the concepts in both languages.

Nullable Types

Nullable types are for unfortunate ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required