473,386 Members | 1,799 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,386 software developers and data experts.

Calling the base class constructor

Hello,

I was wondering how I could call the base class constructor from a derived
class constructor. In Java I could do something like

super(parameter);

I tried

base(parameter);

in C# but it doesn't compile. Any ideas?

Thanks in advance!

--
Jo Vermeulen
Student Computer Science at the tUL
email: jo@lumumba.luc.ac.be
www: http://lumumba.luc.ac.be/jo
Nov 16 '05 #1
7 37685
Jo Vermeulen <jo@lumumba.luc.ac.be> wrote:
I was wondering how I could call the base class constructor from a derived
class constructor. In Java I could do something like

super(parameter);

I tried

base(parameter);

in C# but it doesn't compile. Any ideas?


You do base (parameter) but in a different place:

public Derived() : base (...)
{
}

See http://www.pobox.com/~skeet/csharp/constructors.html for more
information.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Nov 16 '05 #2
Example :

public class BaseClass
{
public BaseClass(int i, int j)
{
...
}
}

public class DerivedClass : BaseClass
{
public DerivedClass(int i, int j, int k) : base(i, j) //this is
where you call base constructor
{
...
}
}

"Jo Vermeulen" <jo@lumumba.luc.ac.be> wrote in message
news:pa****************************@lumumba.luc.ac .be...
Hello,

I was wondering how I could call the base class constructor from a derived
class constructor. In Java I could do something like

super(parameter);

I tried

base(parameter);

in C# but it doesn't compile. Any ideas?

Thanks in advance!

--
Jo Vermeulen
Student Computer Science at the tUL
email: jo@lumumba.luc.ac.be
www: http://lumumba.luc.ac.be/jo

Nov 16 '05 #3
Op Tue, 25 May 2004 13:06:43 +0100, schreef Jon Skeet[ C# MVP]:
Jo Vermeulen <jo@lumumba.luc.ac.be> wrote:
You do base (parameter) but in a different place:

public Derived() : base (...)
{
}

See http://www.pobox.com/~skeet/csharp/constructors.html for more
information.


Oh thanks, that's like C++ then.

Kind regards,

--
Jo Vermeulen
Student Computer Science at the tUL
email: jo@lumumba.luc.ac.be
www: http://lumumba.luc.ac.be/jo
Nov 16 '05 #4
> > I was wondering how I could call the base class constructor from a
derived
class constructor. In Java I could do something like

super(parameter);

I tried

base(parameter);

in C# but it doesn't compile. Any ideas?


You do base (parameter) but in a different place:

public Derived() : base (...)
{
}

See http://www.pobox.com/~skeet/csharp/constructors.html for more
information.

I've never understood why this special syntax is used here. Why not do it
like java and allow base(param);?
This would give you the freedom to do parameter processing before calling
the base ctor or you could do a try{}catch around the base()-call in future
versions of c#.

--
cody

Freeware Tools, Games and Humour
http://www.deutronium.de.vu || http://www.deutronium.tk
Nov 16 '05 #5
cody <no****************@gmx.net> wrote:
See http://www.pobox.com/~skeet/csharp/constructors.html for more
information.


I've never understood why this special syntax is used here. Why not do it
like java and allow base(param);?
This would give you the freedom to do parameter processing before calling
the base ctor or you could do a try{}catch around the base()-call in future
versions of c#.


Just having the Java syntax wouldn't allow that - Java doesn't allow
anything else to happen before the constructor is called either.

For parameter processing, the normal approach is to write a static
method which massages the parameters appropriately, and use

public Foo(int x) : base (Massage(x))
{
....
}

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Nov 16 '05 #6
> > I've never understood why this special syntax is used here. Why not do
it
like java and allow base(param);?
This would give you the freedom to do parameter processing before calling the base ctor or you could do a try{}catch around the base()-call in future versions of c#.
Just having the Java syntax wouldn't allow that - Java doesn't allow
anything else to happen before the constructor is called either.


I know, but this syntax would allow extensions for C# compilers in future to
do something like:

public GifFile(string s)
{
try
{
base (GetCurrentPath() + s + ".gif");
}
catch (IOException e)
{
base(); // call the empty ctor to create empty GIF which can be
filled dynamically
}
}

Theoretically this would bee possible, MSIL allows executing code before
ctor is called and call to multiple base ctors.
For parameter processing, the normal approach is to write a static
method which massages the parameters appropriately, and use

public Foo(int x) : base (Massage(x))
{
...
}


Good idea but it requires an additional method.

--
cody

[Freeware, Games and Humor]
www.deutronium.de.vu || www.deutronium.tk
Nov 16 '05 #7
cody <pl*************************@gmx.de> wrote:
I know, but this syntax would allow extensions for C# compilers in future to
do something like:

public GifFile(string s)
{
try
{
base (GetCurrentPath() + s + ".gif");
}
catch (IOException e)
{
base(); // call the empty ctor to create empty GIF which can be
filled dynamically
}
}

Theoretically this would bee possible, MSIL allows executing code before
ctor is called and call to multiple base ctors.


It would allow for that syntax, yes - but whether they really want to
be encouraging that is a different matter.
For parameter processing, the normal approach is to write a static
method which massages the parameters appropriately, and use

public Foo(int x) : base (Massage(x))
{
...
}


Good idea but it requires an additional method.


Sure - I was just giving a workaround for the current restrictions in
some cases.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Nov 16 '05 #8

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

12
by: st_ev_fe | last post by:
I've noticed that when constructing a subclass, the base class get's it's contructors called. Is there some way to avoid this? The base class has one variable, which gets initialised to 0. ...
3
by: BDB | last post by:
Hi, I'm trying to call a base class' constructor. This is giving me an error: Use of keyword 'base' is not valid in this context. .... public class B : A { B( int i )
4
by: Jeff | last post by:
The derived class below passes a reference to an object in its own class to its base calss constructor. The code compiles and will run successfully as long as the base class constructor does not...
4
by: Fedor Semenov | last post by:
How can I call a base class' constructor from a derived class. Suppose I have: class Button // Base class { public: Button(void) { // Register classes, create the button, etc. } };
4
by: ali | last post by:
Hi, I am new to C++ and trying to understand how to work on Inheritance and Operator overloading. I understand that the derived class can pass the base class constructor in its constructor...
3
by: Richard Coltrane | last post by:
Hi there, In vb.net, if i inherit from a class then the first i generally do in a sub classes contructor is MyBase.New(..); Whats the pattern in C#? It seems to do these things automatically; I...
5
by: desktop | last post by:
I am reading a text that says: "The derived-class constructor initializer names its base-class followed by a (possibly empty) list of arguments. These arguments are the initial values to use in...
11
by: Rahul | last post by:
Hi Everyone, While working with Java, i came across super() which passes values to base class constructor from derived class constructor. I was wondering if this could be implemented in c++ by...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.