Хранение аргументов ссылки [закрыто]C#

Место общения программистов C#
Ответить
Anonymous
 Хранение аргументов ссылки [закрыто]

Сообщение Anonymous »

Предположим, у меня есть следующая настройка:

Код: Выделить всё

public class Class1
{
public int Int1;
public int Int2;
public int Int3;

public int GetInt(string name)
{
return GetType().GetField(name).GetValue(this);  // or use a switch expression
}
public void SetInt(string name, int value)
{
GetType().GetField(name).SetValue(this, value);  // or use a switch statement
}
}

public class Class2
{
public Class1 Container;
public void DoStuff()
{
Class3.DoSomething(ref Container.Int1);
Class3.DoSomething(ref Container.Int2);
Class3.DoSomething(ref Container.Int3);
}
}

public class Class3
{
public static void DoSomething(ref int thing)
{
// ...
}
}
Предположим, я изменил тело DoStuff(), чтобы оно выглядело так:

Код: Выделить всё

public void DoStuffMonitored()
{
int local;
{
local = Container.GetInt("Int1");
Class3.DoSomething(ref local);
Container.SetInt("Int1", local);
}
{
local = Container.GetInt("Int2");
Class3.DoSomething(ref local);
Container.SetInt("Int2", local);
}
{
local = Container.GetInt("Int3");
Class3.DoSomething(ref local);
Container.SetInt("Int3", local);
}
}
Какие предположения я должен сделать относительно тела Class3.DoSomething, чтобы DoStuffMonitored был семантически идентичен DoStuff?
РЕДАКТИРОВАТЬ: Это однопоточная среда.
Для большего контекста все эти классы взяты из сборки, которой я не владею, но для изменения я использую Mono.Cecil время выполнения.

Подробнее здесь: https://stackoverflow.com/questions/797 ... -arguments
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»