ABL - The Problem Solver - .Net FAQ
 

Home
Mission
News
Blog
Tools
FAQ
Publications
Downloads
Contact
Contents

 

Frequently asked questions

.NET FAQ Visual FoxPro FAQ

 


Changing constructor parameters

One of the things that is sort of hard to do is change the value of parameters to constructors in my classes. Take following, very simple example:

 
PublicClass BaseClass
    PublicSubNew(ByVal param AsInteger)
        Console.WriteLine(param)
    EndSub
EndClass
 
PublicClass DerivedClass
    Inherits BaseClass
 
    PublicSubNew(ByVal param AsInteger)
        MyBase.New(param)
    EndSub
EndClass
 
Now if I want to change the value of param in the constructor in the DerivedClass I can't simply add change it's constructor to:
 
PublicSubNew(ByVal param AsInteger)
    param = param + 1
    MyBase.New(param)
EndSub
 
This code won’t compile because the call to the base constructor must be the first line of code.
 
However it turns out you can include a call to a shared function in the call to the base constructor. This allows you to execute any code you want when the objects is instantiated before the base class constructor is called and gives you ample opportunity to change the value passed to the base class.
 
PublicClass DerivedClass
    Inherits BaseClass
 
    PublicSubNew(ByVal param AsInteger)
        MyBase.New(ChangeParam(param))
    EndSub
 
    PrivateSharedFunction ChangeParam(ByVal param AsInteger) AsInteger
        Return param + 1
    EndFunction
EndClass
 
So what restriction do you have? Well the object isn’t instantiated yet so the function needs to be shared and you cannot pass the object reference to it and set any properties/fields.

 


 

Send mail to webmaster@TheProblemSolver.nl with questions or comments about this web site.
Copyright © 1995 - 2007 ABL - The Problem Solver
Last modified: 10/21/06
WF
RSS 2.0