Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace ConsoleApplication77 {
- struct MyStruct {
- public int Value { get; set; }
- //пришлось ввести ещё одно поле, т.к. иначе комплилятор просто, оказывается, оптимизирует всю структуру до одного инта - того, что хранится в Value. Волшебник, блин!
- //и тогда работа везде получается как с обынчым интом и ошибка выглядит логичной.
- public int OtherValue { get; set; }
- public void SetValue(int newValue) {
- Value = newValue;
- }
- public MyStruct(int value) {
- Value = value;
- OtherValue = 0xABBA;
- }
- }
- class Program {
- static void Main(string[] args) {
- //чтобы JIT прогрелся и можно было бы на асм глянуть
- TestClass testClass;
- for (int i = 0; i < 10; i++) {
- testClass = new TestClass();
- testClass.DoThings();
- }
- Console.Clear();
- Console.ReadLine();//чтобы можно было отладчик паузнуть
- testClass = new TestClass();
- testClass.DoThings();
- }
- }
- class TestClass {
- MyStruct MyStruct { get; set; }
- public void DoThings() {
- MyStruct = new MyStruct(0xBEEF);
- Console.WriteLine(MyStruct.Value);
- MyStruct.SetValue(0xDEAD);
- Console.WriteLine(MyStruct.Value);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement