Advertisement
T-D-K

Untitled

Mar 20th, 2018
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.67 KB | None | 0 0
  1. using System;
  2.  
  3. namespace ConsoleApplication77 {
  4.  
  5.     struct MyStruct {
  6.         public int Value { get; set; }
  7.  
  8.         //пришлось ввести ещё одно поле, т.к. иначе комплилятор просто, оказывается, оптимизирует всю структуру до одного инта - того, что хранится в Value. Волшебник, блин!
  9.         //и тогда работа везде получается как с обынчым интом и ошибка выглядит логичной.
  10.         public int OtherValue { get; set; }
  11.  
  12.  
  13.         public void SetValue(int newValue) {
  14.             Value = newValue;
  15.         }
  16.  
  17.         public MyStruct(int value) {
  18.             Value = value;
  19.             OtherValue = 0xABBA;
  20.         }
  21.     }
  22.  
  23.     class Program {
  24.  
  25.         static void Main(string[] args) {
  26.             //чтобы JIT прогрелся и можно было бы на асм глянуть
  27.             TestClass testClass;
  28.             for (int i = 0; i < 10; i++) {
  29.                 testClass = new TestClass();
  30.                 testClass.DoThings();
  31.             }
  32.             Console.Clear();
  33.             Console.ReadLine();//чтобы можно было отладчик паузнуть
  34.             testClass = new TestClass();
  35.             testClass.DoThings();
  36.         }
  37.     }
  38.  
  39.     class TestClass {
  40.         MyStruct MyStruct { get; set; }
  41.  
  42.         public void DoThings() {
  43.             MyStruct = new MyStruct(0xBEEF);
  44.             Console.WriteLine(MyStruct.Value);
  45.             MyStruct.SetValue(0xDEAD);
  46.             Console.WriteLine(MyStruct.Value);
  47.         }
  48.     }
  49.  
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement