943,884 Members | Top Members by Rank

Ad:
  • C# Discussion Thread
  • Marked Solved
  • Views: 75497
  • C# RSS
You are currently viewing page 1 of this multi-page discussion thread
Nov 16th, 2007
0

Static vs Non-Static Methods

Expand Post »
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?
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
sam63 is offline Offline
13 posts
since Nov 2007
Nov 16th, 2007
1

Re: Static vs Non-Static Methods

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.
Featured Poster
Reputation Points: 975
Solved Threads: 140
Posting Virtuoso
scru is offline Offline
1,624 posts
since Feb 2007
Nov 16th, 2007
0

Re: Static vs Non-Static Methods

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

Ssam
Reputation Points: 10
Solved Threads: 0
Newbie Poster
sam63 is offline Offline
13 posts
since Nov 2007
Nov 16th, 2007
0

Re: Static vs Non-Static Methods

nope, as far as I know
Featured Poster
Reputation Points: 975
Solved Threads: 140
Posting Virtuoso
scru is offline Offline
1,624 posts
since Feb 2007
Nov 24th, 2007
0

Re: Static vs Non-Static Methods

Click to Expand / Collapse  Quote originally posted by sam63 ...
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
Reputation Points: 10
Solved Threads: 0
Newbie Poster
chakrimsis is offline Offline
2 posts
since Nov 2007
Sep 9th, 2009
0

Re: Static vs Non-Static Methods

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

Click to Expand / Collapse  Quote originally posted by scru ...
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.
Reputation Points: 10
Solved Threads: 0
Newbie Poster
sathish@daniweb is offline Offline
2 posts
since Sep 2009
Sep 9th, 2009
0

Re: Static vs Non-Static Methods

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)
  1. 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)
  1. System.Windows.Forms.MessageBox MB = new System.Windows.Forms.MessageBox();
  2.  
  3. MB.Show("some Message");

now wouldn't that suck?

it can have other purposes but that's the deciding factor for me.
Reputation Points: 442
Solved Threads: 89
Master Poster
Diamonddrake is offline Offline
721 posts
since Mar 2008
Sep 11th, 2009
0

Re: Static vs Non-Static Methods

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)
  1. 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)
  1. System.Windows.Forms.MessageBox MB = new System.Windows.Forms.MessageBox();
  2.  
  3. MB.Show("some Message");

now wouldn't that suck?

it can have other purposes but that's the deciding factor for me.
Reputation Points: 10
Solved Threads: 0
Newbie Poster
sathish@daniweb is offline Offline
2 posts
since Sep 2009
Sep 11th, 2009
0

Re: Static vs Non-Static Methods

when you need a messagebox, you just call a static method to show it. ex.
C# Syntax (Toggle Plain Text)
  1. 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!
Reputation Points: 341
Solved Threads: 233
Posting Shark
DdoubleD is offline Offline
984 posts
since Jul 2009
Apr 6th, 2010
0
Re: Static vs Non-Static Methods
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
Reputation Points: 10
Solved Threads: 0
Newbie Poster
sgavriel is offline Offline
1 posts
since Apr 2010

This thread is solved

Either the thread starter or a moderator has marked this thread as solved. You can most likely trust the responses and answers given. There is most likely no reason for any further responses to be posted here. If you have a related question, please start a new thread in this forum instead.

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
This thread is currently closed and is not accepting any new replies.
Previous Thread in C# Forum Timeline: Key Bind
Next Thread in C# Forum Timeline: SqlException was unhandled in SQLEXPRESS 2008.





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC