If you look at the more advanced plcs,
They use a tag (symbolic) based addressing system,
They allow the programmer to define structures,
and to build user defined function blocks (object orientated programming). For example I create a motor control function block and then create an instance of this block for each motor. The function would be called from ladder or one of the other languages. Inside this block may be a ladder program (or one of the other standard langauges - function block, statement list, structured text or sequential function chart)
And all this programmed and debugged inside a gui allowing real time programming, modification and monitoring using a graphical representation.
So yes it is 'WAY BETTER' to use a high-level language, but that high level language is the plc software already used on the latest plcs
I also program using dotnet, just not for machine control
ps
In this scenario the Text based style is going to win hands down
personally in a control situation I find function block program far more effective