oop - c# - static method or not, which one is the best? -


i know there posts on didn't find answer i'm looking for, , simple.

i know calling method static or not (instanciation (oop)).

example, using static:

using system;  namespace projet_test {     class surfacescalcul     {         public static int calc_air(int a, int b){             int result = * b;              return result;         }     }      /*      * ##########################      * ##########################      */      class mainclass     {         public static void main (string[] args)         {             console.writeline(surfacescalcul.calc_air(4,5));         }     } } 

you call class(surfacescalcul).method , can access method.

--

normal, using oop:

using system;  namespace projet_test {     class surfacescalcul     {         public int calc_air(int a, int b){             int result = * b;              return result;         }     }      /*      * ##########################      * ##########################      */      class mainclass     {         public static void main (string[] args)         {             surfacescalcul calculmethis = new surfacescalcul();              console.writeline(calculmethis.calc_air(4,5));         }     } } 

you create instantiation , can access methods in class.

--

[my question] 1 best, i'm wondering why using static method more instance or inverse. there real reason or both good. there best time use 1 more other?

i'll argue both sides , can choose.

consider first example static function:

namespace projet_test {     class surfacescalcul     {         public static int calc_air(int a, int b){             int result = * b;              return result;         }     }      /*      * ##########################      * ##########################      */      class mainclass     {         public static void main (string[] args)         {             console.writeline(surfacescalcul.calc_air(4,5));         }     } } 

this fine if never care overriding or kind of inheritance.

now consider example:

class surfacescalcul {     public virtual int calc_air(int a, int b){         int result = * b;          return result;     } } class surfacescalcul2 : surfacescalcul {    pubic override int calc_air(int a, int b)    {       var g = base.calc_air(a, b);       return g*2;     } }  /*  * ##########################  * ##########################  */  class mainclass {     public static void main (string[] args)     {         var calculmethis = new surfacescalcul2();          console.writeline(calculmethis.calc_air(4,5));     } } 

you're not changing "correctness" of program @ allowing polymorphism thing.

this example trivial matter. i'd prefer route class since static methods can't have instance variables , can't kind of dependency injection, makes unit testing easier. object instantiation allows different instances contain different state information static can't contain instance specific data.


Comments

Popular posts from this blog

powershell Start-Process exit code -1073741502 when used with Credential from a windows service environment -

twig - Using Twigbridge in a Laravel 5.1 Package -

c# - LINQ join Entities from HashSet's, Join vs Dictionary vs HashSet performance -