Динамическое выполнение кода в C # - PullRequest
0 голосов
/ 03 апреля 2009

Я хотел бы динамически управлять выполнением кода, используя указатель, в основном указатель на функцию без фрейма стека. Выполнение не возвращает к месту вызова, но к одной точке.

TopOfLoop:
...
Jump(x)


x1:
...
continue

x2:
...
continue

etc.

Возможно ли это в c #? Спасибо.

Ответы [ 5 ]

2 голосов
/ 03 апреля 2009

Может быть, с помощью оператора <strong>goto</strong>?

Ссылка на MSDN: http://msdn.microsoft.com/en-us/library/13940fs2.aspx

Хотя это не рекомендуемый способ кодирования. Попробуйте вместо этого использовать делегатов:

 Func<T,TResutl> or Action<T>

Пример:

using System;

public class LambdaExpression
{
   public static void Main()
   {
      Func<string, string> convert = s => s.ToUpper();

      string name = "RIA Guy";
      Console.WriteLine(convert(name));   
   }
}
1 голос
/ 03 апреля 2009

Это также похоже на то, что SWITCH будет работать, и это позволит избежать "перехода" в коде (хотя, вероятно, он скомпилирует то же самое).

1 голос
/ 03 апреля 2009

С точки зрения указателей на функции, вы, вероятно, захотите взглянуть на делегатов в c #. Что касается остального, это было покрыто другими.

0 голосов
/ 03 апреля 2009

Вы, конечно, можете вызвать делегата с обратным вызовом, но я не уверен, как выполнить часть «Выполнение не возвращается к месту вызова» за пределами перехода.

0 голосов
/ 03 апреля 2009

Вы можете использовать Перейти . Я бы не стал, но он будет делать то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...