Страницы

Поиск по вопросам

понедельник, 10 декабря 2018 г.

Не простые вопросы о языке C#

Был на собеседовании и завалился. Теперь пытаюсь постепенно забить пробелы в знаниях - осталось немного вопросов, которые я не могу решить сам, поэтому прошу помощи: Есть запакованная структура, как изменить значение поля структуры, при этом не распаковывая её? UPD1: Вопрос на собеседовании который я тоже к сожалению завалил и не смог найти адекватного ответа за пару дней, может кто либо из вас знает : Есть метод в котором много строк кода (100 например), в конце выполнения метода выбивает исключение, как сохранить те данные (ту работу которую проделал данный метод) до исключения ? Буду признателен если хотя бы дадите совет куда "копать" !


Ответ

Через интерфейс void Main() { var o = (I)new A(); (o).Inc(); (o).Dump(); }
interface I { void Inc(); }
struct A : I { public int f; public void Inc() { f++; } } выведет f = 1. Код (нету unbox): IL_0001: ldloca.s 01 // CS$0$0000 IL_0003: initobj UserQuery.A IL_0009: ldloc.1 // CS$0$0000 IL_000A: box UserQuery.A IL_000F: stloc.0 // o IL_0010: ldloc.0 // o IL_0011: callvirt UserQuery+I.Inc IL_0016: nop IL_0017: ldloc.0 // o IL_0018: call LINQPad.Extensions.Dump

Комментариев нет:

Отправить комментарий