C# 如何在c上运行时执行一次方法#

C# 如何在c上运行时执行一次方法#,c#,reflection,methods,runtime,C#,Reflection,Methods,Runtime,是否有可能在不使用外部属性的情况下,在实例的运行时多次阻止方法执行 我希望我是清楚的! Bests当然,带有一个标志,指示实例上的方法是否已运行 public class RunOnceMethod { private bool haveIRunMyMethod = false public void ICanOnlyRunOnce() { if(haveIRunMyMethod) throw new InvalidOperationException("ICa

是否有可能在不使用外部属性的情况下,在实例的运行时多次阻止方法执行

我希望我是清楚的!
Bests

当然,带有一个标志,指示实例上的方法是否已运行

public class RunOnceMethod
{
  private bool haveIRunMyMethod = false

  public void ICanOnlyRunOnce()
  {
    if(haveIRunMyMethod)
      throw new InvalidOperationException("ICanOnlyRunOnce can only run once");

    // do something interesting

    this.haveIRunMyMethod = true;
  }
}
对, 你可以这样用

void method(args)
{
    static int a;
    if(a != 0)
    {
        return;
    }
    // body of method and 
    a++;
}
原因是这个静态a不会被复制到函数调用的激活记录中,所有调用都只共享一个a


我希望这能解决您的问题。

尝试使用一个

否,如果不存储某种“状态”表示方法已执行,则无法阻止方法执行

执行此操作的一种方法是“保护”/“启动时检查”:

private bool AExecuted = false;
public void A()
{
    if (AExecuted)
       return;
    else
       AExecuted = true;

    /* Your code */
}

希望这有帮助

你说的“外部属性”是什么意思?请展示一些代码来演示您的问题。例如,如果我们使用bool IsExecuted=false,在第一次切换IsExecuted=true时,我们会测试(IsExecuted)是否引发异常。在方法中不能将变量声明为静态。还有,每个实例都要问一次问题。。。我想他是在问C++,这对你有什么帮助?静态构造函数如何在方法运行时进行测试或阻止方法随后的方法执行?该方法可以包含在类的静态构造函数中&“非泛型类的静态构造函数在给定的应用程序域中最多执行一次”从ECMA C#spec复制的逐字记录-它由//静态构造函数工作,在调用任何//实例构造函数或访问成员之前,静态构造函数最多调用一次。并且可以设置一个值,该值在调用该方法时更改。下次该方法尝试首先执行时,它会检查值。喜欢它。OP指定“防止在实例的运行时多次执行方法”,然后将谈论静态构造函数的答案标记为答案。有时候你需要成为一个读心术的人。我没有要求这些能力;)AExecuted不应该是静态的吗?@AB Kolan-不?他需要每个实例的守卫。这是每个类运行一次-OP要求每个实例运行一次。
public class TestClass
{
static private bool _isExecutedFirst = false;

public void MethodABC()
{
if(!_isExecutedFirst)
_isExecutedFirst = true;
else
throw Exception("Method executed before");
/////your code

} 
}