Static code blocks

前端 未结 5 2112
遇见更好的自我
遇见更好的自我 2021-02-06 19:56

Going from Java to C# I have the following question: In java I could do the following:

public class Application {
    static int attrib         


        
相关标签:
5条回答
  • 2021-02-06 20:42

    -A static constructor doesn't have any parameter.
    -A static class can contain only one static constructor.
    -A static constructor executes first when we run the program.

    Example:

    namespace InterviewPreparation  
    {  
        public static class Program  
        {  //static Class
            static Program()  
            { //Static constructor
                Console.WriteLine("This is static consturctor.");  
            }  
            public static void Main()  
            { //static main method
                Console.WriteLine("This is main function.");  
                Console.ReadKey();  
            }  
        }  
    }  
    

    Output:
    This is static constructor.
    This is main function.

    0 讨论(0)
  • 2021-02-06 20:43

    In your particular scenario, you could do the following:

    public class Application { 
        static int attribute = 5;
       // ... rest of code 
    }
    

    UPDATE:

    It sounds like you want to call a static method. You can do that as follows:

    public static class Application {
        static int attribute = 5;
    
        public static int UtilityMethod(int x) {
            return x + attribute;
        }
    }
    
    0 讨论(0)
  • 2021-02-06 20:52

    You just can write a static constructor block like this,

    static Application(){
     attribute=5;
    }
    

    This is what I could think of.

    0 讨论(0)
  • 2021-02-06 20:54
    public class Application
    {     
    
        static int attribute;     
        static Application()
        {         
             attribute = 5;     
        }    // removed
    }
    

    You can use the C# equivalent static constructors. Please don't confuse it with a regular constructor. A regular constructor doesn't have a static modifier in front of it.

    I am assuming your //... rest of the code need to be also run once. If you don't have such code you can just simply do this.

     public class Application
     {     
    
        static int attribute = 5;
     }
    
    0 讨论(0)
  • 2021-02-06 20:58

    I find something else useful. If your variable needs more than one expressions/statements to initialize, use this!

    static A a = new Func<A>(() => {
       // do it here
       return new A();
    })();
    

    This approach is not limited on classes.

    0 讨论(0)
提交回复
热议问题