0
0
C Sharp (C#)programming~20 mins

Constructors and initialization in C Sharp (C#) - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Constructor Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of constructor chaining in C#
What is the output of this C# program when creating an instance of Person with new Person()?
C Sharp (C#)
using System;
class Person {
    public string Name;
    public int Age;

    public Person() : this("Unknown") {
        Console.WriteLine("Default constructor called");
    }

    public Person(string name) {
        Name = name;
        Age = 0;
        Console.WriteLine($"Constructor with name: {Name}");
    }
}

class Program {
    static void Main() {
        Person p = new Person();
    }
}
A
Constructor with name: Unknown
Default constructor called
B
Default constructor called
Constructor with name: Unknown
CDefault constructor called
D
Constructor with name: 
Default constructor called
Attempts:
2 left
💡 Hint
Remember that constructor chaining calls the chained constructor first before executing the body of the calling constructor.
Predict Output
intermediate
2:00remaining
Field initialization order in C# class
What is the output of this C# program?
C Sharp (C#)
using System;
class Sample {
    private int x = 5;
    private int y;

    public Sample() {
        y = x * 2;
        Console.WriteLine($"x = {x}, y = {y}");
    }
}

class Program {
    static void Main() {
        Sample s = new Sample();
    }
}
Ax = 0, y = 10
Bx = 5, y = 10
Cx = 0, y = 0
Dx = 5, y = 0
Attempts:
2 left
💡 Hint
Fields initialized inline are set before the constructor body runs.
Predict Output
advanced
2:00remaining
Output of static and instance constructors
What is the output when this C# program runs?
C Sharp (C#)
using System;
class Demo {
    static Demo() {
        Console.WriteLine("Static constructor called");
    }

    public Demo() {
        Console.WriteLine("Instance constructor called");
    }
}

class Program {
    static void Main() {
        Demo d1 = new Demo();
        Demo d2 = new Demo();
    }
}
A
Instance constructor called
Instance constructor called
Static constructor called
B
Instance constructor called
Static constructor called
Instance constructor called
C
Static constructor called
Instance constructor called
D
Static constructor called
Instance constructor called
Instance constructor called
Attempts:
2 left
💡 Hint
Static constructors run once before any instance is created or static member accessed.
Predict Output
advanced
2:00remaining
Output of readonly field initialization
What is the output of this C# program?
C Sharp (C#)
using System;
class Test {
    private readonly int number;

    public Test(int num) {
        number = num;
        Console.WriteLine($"Number is {number}");
    }

    public void ChangeNumber(int newNum) {
        // number = newNum; // Uncommenting this line causes error
    }
}

class Program {
    static void Main() {
        Test t = new Test(10);
        t.ChangeNumber(20);
        Console.WriteLine("Done");
    }
}
A
Number is 10
Done
B
Number is 20
Done
CCompilation error due to assignment in ChangeNumber method
D
Number is 0
Done
Attempts:
2 left
💡 Hint
Readonly fields can only be assigned in declaration or constructor.
Predict Output
expert
3:00remaining
Output of complex constructor and field initialization order
What is the output of this C# program?
C Sharp (C#)
using System;
class Base {
    public Base() {
        Console.WriteLine("Base constructor");
        Print();
    }
    public virtual void Print() {
        Console.WriteLine("Base Print");
    }
}

class Derived : Base {
    private int x = 5;
    public Derived() {
        Console.WriteLine("Derived constructor");
    }
    public override void Print() {
        Console.WriteLine($"Derived Print: x = {x}");
    }
}

class Program {
    static void Main() {
        Derived d = new Derived();
    }
}
A
Base constructor
Derived Print: x = 5
Derived constructor
B
Derived constructor
Base constructor
Derived Print: x = 0
C
Base constructor
Derived Print: x = 0
Derived constructor
D
Derived constructor
Base constructor
Derived Print: x = 5
Attempts:
2 left
💡 Hint
During base constructor, derived fields are not yet initialized.