Sıfır C# bilgimle zıplayayım hemen.
Static genelde (çoğu dilde) ya bir değişkeni kalıcı yapar, ya da metodu öyle yapar. Yani sınıfa ait static metot sınıfa ait olur. Her nesne için ayrı ayrı olmaz. Bellekte bir tane olur.
Örnekte hata aldığınız yerleri belirtmenizden C sınıfının singleton dediğimiz sadece tek nesnesi (instance demek daha doğru) olan bir sınıf olmuş gibi duruyor. Google amcaya sorunca hemen Microsoft abimiz "A static class is basically the same as a non-static class, but there is one difference: a static class cannot be instantiated. In other words, you cannot use the new operator to create a variable of the class type. Because there is no instance variable, you access the members of a static class by using the class name itself." demiş. Dediğime aykırı bir şey göremiyorum.
C sınıfı içindeki Anesnesi4'e erişmek için C.Anesnesi4 yazmanız yeterli olmalı. Math.PI demenizden farksız.
Main'deki hata ilgimi çekti. Sanırım sebebi Main'in halihazırda static olması. Main static ise zaten Main'den bir tane vardır. İçindekiler zaten bir tanedir. Tekrar static demek saçma. Bunu bir integer değişken ile deneyerek görebiliyoruz.
Microsoft abimiz static member'lardan da bahsetmiş. Demiş ki: "C# does not support static local variables.", yani Main bu yüzden çalışmıyor. Yani B sınıfındaki metotlar bu yüzden çalışmıyor.
Dediğim kalıcı değişken olayı yokmuş C#'ta. Static'ler zaten class member'ı olarak tutulabildiği için oradan kullanıp duruyormuş millet.
Static classes can't be instantiated in C#. You access the members of a static class by using the class name itself.
learn.microsoft.com