We're a community of 1076K IT Pros here for help, advice, solutions, professional growth and fun. Join us!
1,075,716 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Start New Discussion Reply to this Discussion

Static vs Non-Static Methods

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?

9
Contributors
11
Replies
4 Years
Discussion Span
11 Months Ago
Last Updated
15
Views
Question
Answered
sam63
Newbie Poster
13 posts since Nov 2007
Reputation Points: 10
Solved Threads: 0
Skill Endorsements: 0

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.

scru
Posting Virtuoso
1,629 posts since Feb 2007
Reputation Points: 975
Solved Threads: 141
Skill Endorsements: 7

Are there methods that can be applied statically and non-statically (via instantiation) in the same program?

Ssam

sam63
Newbie Poster
13 posts since Nov 2007
Reputation Points: 10
Solved Threads: 0
Skill Endorsements: 0

nope, as far as I know

scru
Posting Virtuoso
1,629 posts since Feb 2007
Reputation Points: 975
Solved Threads: 141
Skill Endorsements: 7
Question Answered as of 5 Years Ago by scru

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

chakrimsis
Newbie Poster
2 posts since Nov 2007
Reputation Points: 10
Solved Threads: 0
Skill Endorsements: 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.

sathish@daniweb
Newbie Poster
2 posts since Sep 2009
Reputation Points: 10
Solved Threads: 0
Skill Endorsements: 0

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.

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

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.

Diamonddrake
Master Poster
724 posts since Mar 2008
Reputation Points: 442
Solved Threads: 90
Skill Endorsements: 5

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.

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

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.

sathish@daniweb
Newbie Poster
2 posts since Sep 2009
Reputation Points: 10
Solved Threads: 0
Skill Endorsements: 0

when you need a messagebox, you just call a static method to show it. ex.

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!

DdoubleD
Posting Shark
996 posts since Jul 2009
Reputation Points: 341
Solved Threads: 233
Skill Endorsements: 3

We use the static method in a server class so all static methods and fields would be the common data for server instances. The instances are per client connection.
The static fields and methods are used for the common actions and info.

What do you think about this model?

--------
Thanks
Sharon

sgavriel
Newbie Poster
1 post since Apr 2010
Reputation Points: 10
Solved Threads: 0
Skill Endorsements: 0

Welcome sgavriel.

We appreciate your help. Have you ever noticed that the current thread is three years old? Please do not resurrect old threads. Take a look at forumrules.
Thread Closed.

__avd
Posting Genius (adatapost)
Moderator
8,736 posts since Oct 2008
Reputation Points: 2,141
Solved Threads: 1,262
Skill Endorsements: 50

Thanks. Its really a nice article. It helped me very much... Thenks again.

MuhammadSaad
Newbie Poster
1 post since May 2012
Reputation Points: 0
Solved Threads: 0
Skill Endorsements: 0

This question has already been solved: Start a new discussion instead

Post: Markdown Syntax: Formatting Help
 
You
 
© 2013 DaniWeb® LLC
Page rendered in 0.0927 seconds using 2.69MB