Can I Write Programs for PLC Controlling in C#? How?
Not likely. C# requires an implementation of the Common Language Runtime (CLR) to run applications developed in that language or any .NET language. I would say it is very unlikely that any PLC will ever be manufactured which supports this for various reasons.
Now what you can do is have your C# application read and write data from the PLC using the OPC protocol. There are a few different libraries for using OPC that are available for the .NET Framework.
Here is a pretty good website for laying out the options.