First of all: C++ is not recommended. Not even by the experts. As one of the reasons for C#, the lead architects at Microsoft state: “C# was invented because C++ was too hard.” There is no good point in torturing oneself is there? For in depth background informative I recommend watching the Visual Studio Documentary.
For some hard job market data have a look at this website on language trends. It shows demand and supply for a number of popular languages. The advice: “Go away from Java (or well, from everything else for that matter) and start on .NET!” There is a strong demand for PHP developers, although paradoxically PHP hourly rates are low.
If you want to learn a functional language I would suggest F#, although the language has been released only a few years ago. I do expect F# to catch up; in the end of the day Microsoft always does. If you wish to learn F#, Visual Studio 2010 in combination with the free online book ‘The F# Survival Guide‘ is a good start.
There are many functional programming languages. Still I believe that for a C# developer an investment in F# is a good choice. Three reasons: 1) it is a different language paradigm 2) you can leverage your existing knowledge of the (uninteresting) support libraries and 3) C# has some functional programming features that you might better understand after learning a real functional language. What I am basically saying is: learn F# to improve your C# skills.
Learning a new paradigm is a good thing since it broadens your understanding of computer science as whole. But also learn available tools, framework and libraries. Examples are: Microsoft Message Queue, Microsoft Enterprise Library, ASP.Net MVC, Code Contracts, StyleCop, FxCop or unit testing with PEX.
Microsoft has done a good job with the .Net framework and C#. It has good performance; it is a multi-purpose language and there are continuous improvements. Even as important: the framework, language and tools are very well supported through an active community, books and certification. There is no need to run away from C#. The neighbor’s grass will not be greener.
One could criticize Microsoft for not being an innovator. Apart from its very first product – BASIC – It has never been. Not even with Windows. But one thing is for sure. You can also trust Microsoft to be Microsoft: a slow starter who is very good at catching up. Business value is not always achieved using the language du jour. If you are fluent with C# and the .Net framework, stick with it and strive to become even better. Even for C# experts there is still a lot to learn.