Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 187
  • Last Modified:

500pts: Which methods to implement in a class by default i.e ToString()?

Hi there,

I was looking for some b ackground info on what methods i should be implementing by default in my classes (or overriding)...

I remember seeing a document once outlining best practises ... what to override, what interfaces to use if you wish to use a foreach on your class etc... but i just can't find it...

I was wondering if anyone has any recommendations of what methods / properties I should be implementing /overriding by defautl?

Also currently i am always using and awful lot 'private' access modifiers on classes... should i really be using protected so it can be picked up in another class/derived class... i suppose this depends,, but it was just concerning me that all my classes contain private members etc

Look forward to any information..

Thanks in advance

Ian
0
ianinspain
Asked:
ianinspain
3 Solutions
 
AlexFMCommented:
By default, ToString returns type name. If you want to replace this with something helpful, override ToString.
All other depends on your requirements. If class should be serializable, implement ISerializable interface. If class is some collection wrapper, implement INumerable interface. If class allocates some unmanaged resources, or has IDisposable members, implement IDisposable interface.

If you don't want this class to be inherited, make it sealed, and make all non-public method private.
If you want to allow inheritance, don't use sealed. Decide, which methods you want to be inherited, and make them protected.
0
 
existenz2Commented:
Basicly you don't need to override any class by default. If you aren't using the ToString() method, don't bother overriding it.

For the rest it's basicly what AlexFM says. However I would add that you should implement IDisposable also when the object can contain a lot of data. That way it gets cleaned a bit quicker when you call the Dispose() method.
0
 
anarki_jimbelCommented:
about private, protected etc. modifiers.

There are good reasons to use them all, again, it depends on your needs and requirements. It's a common practice to have private fields and access them through public properties. If you need to extend some classes you still may have private fieldsin them and access them through public properties. In some other situations protected comes quite handy...
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
AlexFMCommented:
>> you should implement IDisposable also when the object can contain a lot of data.
There are two reasons to implement IDisposable: class allocates unmanaged resources, or contains disposable members. Lot of data is not a reason. Dispose method doesn't release managed resources, even if there is a lot of them.
0
 
existenz2Commented:
Alex> I agree, wasn't really clear about that. However if you have a very big byte array in your class, you most likely do want to do "data = null;" in the overriden Dispose() method. The data won't be freed right away, but it will get the "clean" flag faster and the Garbage Collector will free it up faster then normally. That's what I meant to say.
0
 
AlexFMCommented:
Let's say that array belongs to class instance. If class instance has 0 reference counter, it becomes candidate for garbage collecting. At the same time, this array becomes candidate for garbage collecting as well, if it is not referenced somewhere outside of class. Array has reference counter 1, but it is referenced only from "dead" instance, so this array is still subject of collecting. Setting array reference to null inside of class reduces array reference counter to 0, but this doesn't change anything.
It is interesting to write simple program which tests this, I will do this some time later. However, this discussion is out of scope of original question.
0
 
ianinspainAuthor Commented:
excellent thanks... splitting points..

Ian
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now