?
Solved

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

Posted on 2006-11-29
7
Medium Priority
?
184 Views
Last Modified: 2010-04-16
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
Comment
Question by:ianinspain
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
7 Comments
 
LVL 48

Expert Comment

by:AlexFM
ID: 18035294
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
 
LVL 14

Expert Comment

by:existenz2
ID: 18041048
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
 
LVL 30

Assisted Solution

by:anarki_jimbel
anarki_jimbel earned 600 total points
ID: 18041479
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
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!

 
LVL 48

Accepted Solution

by:
AlexFM earned 800 total points
ID: 18043326
>> 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
 
LVL 14

Assisted Solution

by:existenz2
existenz2 earned 600 total points
ID: 18043469
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
 
LVL 48

Expert Comment

by:AlexFM
ID: 18043569
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
 

Author Comment

by:ianinspain
ID: 18075781
excellent thanks... splitting points..

Ian
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
In this video, Percona Director of Solution Engineering Jon Tobin discusses the function and features of Percona Server for MongoDB. How Percona can help Percona can help you determine if Percona Server for MongoDB is the right solution for …
In this video, Percona Solutions Engineer Barrett Chambers discusses some of the basic syntax differences between MySQL and MongoDB. To learn more check out our webinar on MongoDB administration for MySQL DBA: https://www.percona.com/resources/we…
Suggested Courses
Course of the Month14 days, 10 hours left to enroll

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question