Untitled

 avatar
unknown
csharp
a year ago
2.3 kB
4
Indexable
var class1 = new Class1<string>();
//Class1_static_ctor
//Parent_static_ctor
//Parent_instance_ctor
//Class1_instance_ctor

Console.WriteLine();

var class2 = new Class2();
//Class2_static_ctor
//Parent_instance_ctor
//Class2_instance_ctor

Console.WriteLine();

var class3 = new Class3<int>();
//Parent_static_ctor
//Parent_instance_ctor
var class4 = new Class4();

Console.WriteLine();

class1.Print(); //Class1
class2.Print(); //Class2

Console.WriteLine();

((Parent<string>)class1).Print(); //Class1
((Parent<string>)class2).Print(); //Parent

Console.WriteLine();

((RootParent)class1).Print(); //RootParent
((RootParent)class2).Print(); //RootParent

Console.WriteLine();

((Interface)class1).Print(); //Class1
((Interface)class2).Print(); //Class2
((Interface)class3).Print(); //Parent
((Interface)class4).Print(); //Interface

Console.WriteLine();

((RootInterface)class1).Print(); //Class1
((RootInterface)class2).Print(); //Class2
((RootInterface)class3).Print(); //Parent
((RootInterface)class4).Print(); //RootInterface

Console.WriteLine("Hello, World!");

//Parent_static_ctor

public class Class1<T> : Parent<T>, Interface
{
    public Class1() => Console.WriteLine("Class1_instance_ctor");
    static Class1() => Console.WriteLine("Class1_static_ctor");

    public override void Print() => Console.WriteLine("Class1");
}

public class Class2 : Parent<string>, Interface
{
    public Class2() => Console.WriteLine("Class2_instance_ctor");
    static Class2() => Console.WriteLine("Class2_static_ctor");

    public new void Print() => Console.WriteLine("Class2");
}

public class Class3<T> : Parent<T>, Interface;

public class Class4 : Interface;

public class Parent<T> : RootParent
{
    public Parent() => Console.WriteLine("Parent_instance_ctor");
    static Parent() => Console.WriteLine("Parent_static_ctor");

    public virtual new void Print() => Console.WriteLine("Parent");
}

public class RootParent
{
    public virtual void Print() => Console.WriteLine("RootParent");
}

public interface Interface : RootInterface
{
    public new void Print() => Console.WriteLine("Interface");
}

public interface RootInterface
{
    public void Print() => Console.WriteLine("RootInterface");
}
Editor is loading...
Leave a Comment