| | |
Static vs Non-Static Methods
Please support our C# advertiser: Programming Forums - DaniWeb Sister Site
Thread Solved |
Well I can't conclusively say that one is better, because they serve different purposes.
Are you familiar with OOP? In OOP, static objects or members of a class that can be accessed directly from the class, while non-static members can only be accessed from the instance it belongs to.
C# follows a similar principle for the methods. The static methods can by accessed directly from the class, while non-static methods (or instance methods as I like to call them) have to be accessed from an instance. That is why instatiating needs to be done for instance methods, while for static methods it's just not needed, and furthermore impractical (see below).
In OOP, static variables are used for values which cannot be stored by an instance variable. Example: supposed you wanted to keep a count of how many instances of a class exists? How would you store that in a single instance?
The methods use a similar principle. They should be used for procedures for which it is impractical to do within an instance of a class. I tend to use them for broad procedures (not a technical term), meaning those that do not require me to instantiate an object. Example, adding two parameters. (This usage may or may not be correct, but I believe it is)
However, if you wanted to add two properties of an object, the method cannot be static, because as you would soon realize, static methods cannot access instance methods or variables within a class. Of course that makes sense because that static method would not know which instance of the class the get these from unless it were told, since it is not part of an instance itself)
For the sake of no further complicating things, I'll stop here. Let me know if you misunderstood anything.
Are you familiar with OOP? In OOP, static objects or members of a class that can be accessed directly from the class, while non-static members can only be accessed from the instance it belongs to.
C# follows a similar principle for the methods. The static methods can by accessed directly from the class, while non-static methods (or instance methods as I like to call them) have to be accessed from an instance. That is why instatiating needs to be done for instance methods, while for static methods it's just not needed, and furthermore impractical (see below).
In OOP, static variables are used for values which cannot be stored by an instance variable. Example: supposed you wanted to keep a count of how many instances of a class exists? How would you store that in a single instance?
The methods use a similar principle. They should be used for procedures for which it is impractical to do within an instance of a class. I tend to use them for broad procedures (not a technical term), meaning those that do not require me to instantiate an object. Example, adding two parameters. (This usage may or may not be correct, but I believe it is)
However, if you wanted to add two properties of an object, the method cannot be static, because as you would soon realize, static methods cannot access instance methods or variables within a class. Of course that makes sense because that static method would not know which instance of the class the get these from unless it were told, since it is not part of an instance itself)
For the sake of no further complicating things, I'll stop here. Let me know if you misunderstood anything.
•
•
Join Date: Nov 2007
Posts: 2
Reputation:
Solved Threads: 0
•
•
•
•
What is the difference? Is one better than the other? How do you choose between the two?
Why does one not need to instantiate when calling a static method?
Once u define the Static Variables it will remains the value upto u close the application
means it scop of this static varible is upto application exist
non-static varible will lose the value which is stored in the non-static varible
its scope is upto that loop only
and u need to explicit ly gargabe collect that the static variable
static variable can be accessesble by the calss name not with the object
•
•
Join Date: Sep 2009
Posts: 2
Reputation:
Solved Threads: 0
I can understand the purpose of static members .. but couldnt get the purpose of static methods.. I need to know in which situation we will use static methods..Thanks
•
•
•
•
Well I can't conclusively say that one is better, because they serve different purposes.
Are you familiar with OOP? In OOP, static objects or members of a class that can be accessed directly from the class, while non-static members can only be accessed from the instance it belongs to.
C# follows a similar principle for the methods. The static methods can by accessed directly from the class, while non-static methods (or instance methods as I like to call them) have to be accessed from an instance. That is why instatiating needs to be done for instance methods, while for static methods it's just not needed, and furthermore impractical (see below).
In OOP, static variables are used for values which cannot be stored by an instance variable. Example: supposed you wanted to keep a count of how many instances of a class exists? How would you store that in a single instance?
The methods use a similar principle. They should be used for procedures for which it is impractical to do within an instance of a class. I tend to use them for broad procedures (not a technical term), meaning those that do not require me to instantiate an object. Example, adding two parameters. (This usage may or may not be correct, but I believe it is)
However, if you wanted to add two properties of an object, the method cannot be static, because as you would soon realize, static methods cannot access instance methods or variables within a class. Of course that makes sense because that static method would not know which instance of the class the get these from unless it were told, since it is not part of an instance itself)
For the sake of no further complicating things, I'll stop here. Let me know if you misunderstood anything.
static methods are used when you will need to access a method from many different classes or forms, you wouldn't want to create an object every time you needed that method. and you certainly wouldn't want to retype or copy and paste the same method into every class you needed it in.
an example would be the static method "Show" from the static class MessageBox.
when you need a messagebox, you just call a static method to show it. ex.
if it weren't static, you would first have to create an instance of the class that contains it it would be like
now wouldn't that suck?
it can have other purposes but that's the deciding factor for me.
an example would be the static method "Show" from the static class MessageBox.
when you need a messagebox, you just call a static method to show it. ex.
C# Syntax (Toggle Plain Text)
System.Windows.Forms.MessageBox.Show("some message");
if it weren't static, you would first have to create an instance of the class that contains it it would be like
C# Syntax (Toggle Plain Text)
System.Windows.Forms.MessageBox MB = new System.Windows.Forms.MessageBox(); MB.Show("some Message");
now wouldn't that suck?
it can have other purposes but that's the deciding factor for me.
•
•
Join Date: Sep 2009
Posts: 2
Reputation:
Solved Threads: 0
That make sense..Thanks dude..
•
•
•
•
static methods are used when you will need to access a method from many different classes or forms, you wouldn't want to create an object every time you needed that method. and you certainly wouldn't want to retype or copy and paste the same method into every class you needed it in.
an example would be the static method "Show" from the static class MessageBox.
when you need a messagebox, you just call a static method to show it. ex.
C# Syntax (Toggle Plain Text)
System.Windows.Forms.MessageBox.Show("some message");
if it weren't static, you would first have to create an instance of the class that contains it it would be like
C# Syntax (Toggle Plain Text)
System.Windows.Forms.MessageBox MB = new System.Windows.Forms.MessageBox(); MB.Show("some Message");
now wouldn't that suck?
it can have other purposes but that's the deciding factor for me.
•
•
Join Date: Jul 2009
Posts: 972
Reputation:
Solved Threads: 213
•
•
•
•
when you need a messagebox, you just call a static method to show it. ex.
C# Syntax (Toggle Plain Text)
System.Windows.Forms.MessageBox.Show("some message");
I know this is solved, but I just wanted to add that I often use static methods to test out a class I have written: eg.
public static void Test() , then as DiamondDrake has pointed out with the example usage of MesageBox.Show() , you let the method, Test() in my case, take care of the details related to the class including instantiating it.Cheers!
![]() |
Similar Threads
- static (Java)
- Non-Static method cannot be referanced from a Static context (Java)
- Set up static IP with AirPort on Windows (Networking Hardware Configuration)
- callbacks and class member functions... (C++)
- What is Static Friend function (C)
- Implmenting Interfaces (Java)
- static variable (C)
- Would someone be so kind as to view and verify... (Java)
- Constructor (Java)
- Sequential search in java (Java)
Other Threads in the C# Forum
- Previous Thread: Simple Objects in GDI+: Placement
- Next Thread: Visual Studio Pass controls in args
Views: 19938 | Replies: 8
| Thread Tools | Search this Thread |
Tag cloud for C#
.net access ado.net algorithm array barchart bitmap box broadcast button buttons c# chat check checkbox class client code combobox control conversion csharp custom database datagrid datagridview dataset datetime degrees development draganddrop drawing encryption enum event excel file files form format forms ftp function gdi+ http httpwebrequest image index input install label list listbox listener login mandelbrot math mouseclick mysql networking object operator oracle path photoshop picturebox pixelinversion post prime programming regex remote remoting resource richtextbox saving serialization server sleep socket sql statistics stream string tcp text textbox time timer treeview update usercontrol validation view visualstudio webbrowser windows winforms wpf xml






