Luffy1
@Luffy1
Student, Junior .NET programmer, C#, JS, HTML/CSS

Где в экземпляре примитивного ссылочного типа, например string, находится информация о том, что этот экземпляр — константа?

Имеется в виду то, что где в экземпляре примитивного ссылочного типа, например string, находится информация о том, что этот экземпляр - константа? Как и где хранится эта информация об экземпляре, а также где хранится информация, что этот экземпляр private, or public, or internal, or virtual(if we're talking about properties), or readonly?
  • Вопрос задан
  • 100 просмотров
Решения вопроса 2
ayazer
@ayazer
Sr. Software Engineer
если поле константа - все использования этого поля будут заменены на значение константы в момент компиляции.

исходный пример:
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;
    }
  }
Ответ написан
freeExec
@freeExec
Участник OpenStreetMap
Зачем хранить нам что она константа, если мы компилируем её так, что её не кто не меняет. А если кто-то пытается, то не компилируем.
Ну а вообще изучайте reflection, можете начать с этого https://docs.microsoft.com/ru-ru/dotnet/api/system...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы