reflection
, можете начать с этого https://docs.microsoft.com/ru-ru/dotnet/api/system... class Program
{
static void Main(string[] args)
{
const int i1 = 10;
var k1 = i1 + Func(i1);
Console.WriteLine(k1);
var i2 = 10;
var k2 = i2 + Func(i2);
Console.WriteLine(k2);
}
private static int Func(int i)
{
return i * 2;
}
}
internal class Program
{
private static void Main(string[] args)
{
Console.WriteLine(10 + Program.Func(10));
int i = 10;
Console.WriteLine(i + Program.Func(i));
}
private static int Func(int i)
{
return i * 2;
}
}
So, как в куче помечено, что класс B унаследован от класса А?
Почему это происходит?
если мы в методе Main напишем B b = new B();, то у нас сначала вызовется статический конструктор в классе B, потом статический конструктор в классе A, потом динамический конструктор в классе A, и динамический конструктор класса В.а над статикой не заморачивайтесь вообще, пока хорошенько не поймете что это такое. это не очень понятно на начальных этапах изучения, и это точно не надо учитывать, пока не дойдете до необходимости создания собственных переопределений статических конструкторов
String
хитрый тип, до недавнего времени его нельзя была задать в роли константы, т.к. он действительно ссылочный тип. Ещё по-умолчанию он интернированный, т.е все одинаковые тексты ссылаются на одним объект. Текст нельзя поменять, можно только создать новый объект с новым текстом.