[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
?
Solved

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

Posted on 2006-11-29
7
Medium Priority
?
185 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

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
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…
This tutorial will teach you the special effect of super speed similar to the fictional character Wally West aka "The Flash" After Shake : http://www.videocopilot.net/presets/after_shake/ All lightning effects with instructions : http://www.mediaf…
Have you created a query with information for a calendar? ... and then, abra-cadabra, the calendar is done?! I am going to show you how to make that happen. Visualize your data!  ... really see it To use the code to create a calendar from a q…

650 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