When comparing Vala vs C#, the Slant community recommends C# for most people. In the question“What are the best statically typed, compiled, memory safe programming languages?” C# is ranked 8th while Vala is ranked 9th. The most important reason people chose C# is:
.NET offers rich functionality.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Rich GTK Support
Vala developed by Gnome Foundation.
Pro Fast
Underneath there is C. It makes some stuff easier to write than it would be with plain C code.
Pro Easy Syntax
Vala is syntactically similar to C# and includes several features such as: anonymous functions, signals, properties, generics, assisted memory management, exception handling, type inference, and foreach statements
Pro C compatible API (and ABI)
C programs can use libraries written in Vala, and vice versa.
Pro Good documentation
There is Valadoc and most of the libraries have Devhelp packages.
Pro Well-integrated with C language
Vala itself is compiled to C, therefore it can use the vast ecosystem of C language, with least effort.
Pro Stable ABI
You can write a library with ABI stability.
Pro A general purpose language
Vala is compiled to C and only requires GLib - or even nothing (posix profile)
Pro Versatile
.NET offers rich functionality.
Pro Visual Studio
The Visual Studio IDE offers one of the best development environments. The Community Edition and Visual Studio Code can be used for free.
Pro Forms
Can be designed visually with the Visual Studio designer for traditional Windows forms, WPF, or Web forms.
Pro 3rd Party support
Lot's of tools and libraries available.
Pro Can be used in a variety of fields
With Xamarin for Mobile (ios, android),
with .net core asp for server (linux, windows),
with .net core for desktop (windows, mac),
with mono for desktop (windows, linux),
with blazor for web client with webassembly.
However, it is not considered top for any of those categories, but it is top choice for Windows desktop with .net framework and top choice for Unity.
.net 5 will unify frameworks similar to JVM (just one).
Pro Cross-Platform
Runs on Linux, Mac, and Windows.
Pro Supported By Microsoft
Constant updates and bug fixes to many popular frameworks, as well as great first-party support from Microsoft. This can be a con as well in certain circumstances.
Pro It is a C like language
Being a C like language counts in favor for it as a general purpose programming language, given the ease of using existing skills to pick up this language easily.
There are other superior languages that could be used as a general purpose, such as: F#, Haskell, but the complexity of those languages, being functional, make them strange to the usual C Syntax.
C# is better than C whenever garbage collection, Objects, classes, data access, are needed. But C is going to be the choice when hardware access and performance are paramount.
Cons
Con Very few resources allocated to the language
Only a single person is working on Vala full time. Gnome Foundation isn't allocating sufficient resources to properly maintain Vala.
Con A very naïve approach to the real problem
Vala just adds more complexity to the game. No real benefits in using a 'programming language emulator' for UI code, you may think it adds to productivity but it's just a way to make the problem last longer, reinventing the wheel everytime and worse.
Con Very limited adoption
Vala isn't used in areas other than GTK development, and no major business has adopted the language.
Con Not a general purpose language
Can't use Vala in multiple software development areas.
Con Very limited tooling
Though using Gnome Builder, you can debug it easily.
Con Heavy reliance on GObject
Heavy reliance on GObject types, although Vala can be used without GObject. (posix profile)
Con Not well documented
It already has tons of documentation, even a book about Vala.https://leanpub.com/vala https://wiki.gnome.org/Projects/Vala/Documentation
Con No stable version
No stable version of Vala released for over a decade so far. Means that Vala isn't production ready.
Con Learning curve
For a beginner the .NET framework can be daunting, the rich functionality means that things often can be done in several ways.
Con Very large runtime
Cannot be used for embedded programming.
Con Microsoft will mess up with the Visual studio installation
And all of a sudden you'll need to reinstall the entire thing just because it stopped working.
Microsoft assumes that every workstation is connected to the Internet then it is always pushing updates.
Con .NET is a mess
Troublesome in regards to being Microsoft centric, updates, security, excessively large, cross-platform issues, etc...
Con Windows OS centric
Not very good at being a cross-platform programming language.
Con Strictly object oriented
Con Owned by Microsoft
And like always, Microsoft is to be avoided, no exceptions.