Cook Computing

 

«  C# - Const Parameters and Methods  »

Wednesday 22 May 2002

Returning to the subject of the advantages MC++ has over C#, I was writing some unmanaged C++  like this yesterday:

void Foo(const string& str) 

which triggered the realisation that C# doesn't support either const parameters or const methods. Maybe this was something else that could quoted in MC++'s favour? However a test program revealed that although const parameters can be used in the methods of a managed class, methods themselves cannot be defined as const.

Classes with methods using const parameters compile as CLS-compliant, using a modifier to indicate that a parameter is const:

.method public instance void  Foo(int32 modopt([Microsoft.VisualC]Microsoft.VisualC.IsConstModifier) i) cil managed

So MC++ does have a slight edge on C# here. It would have been nice if the CLR supported the concept of const methods and parameters. Use of const may not prevent very many bugs but it may encourage a more disciplined approach to writing code.

Posted by at 09:03 AM. Permalink.