C# will never replace C++ because C# does not give you enough control of memory that many systems demand. From a game development standpoint, many development tools are now being written in C# because it is quick and dirty, but you could never write something like Halo 3, for the xbox360 in C# and be able to stay within the 512MB of ram that the xbox360 provides.

the other are

C# is a language that build MSIL code. This code is compiled by .NET CLR an translated into executable code by the machine. C# can't replace the C++ because compiled C# is not understood directly by the machine.

C++, in .net development, should be used as a complement if there's operating system feature not available to managed code. But based in currents .NET improvements, there's every time less functionality only accessible by unmanaged code. But this won't translate in a C++ replacement, because native development usually leads to better performing applications.

U also find there are so many applications performed by the c++ language than c#....

Although C# applications are intended to be economical with regards to memory and processing power requirements, the language was not intended to compete directly on performance and size with C or assembly language.