如何设置与调用方法范围相关的属性?

时间:2010-05-11 15:19:58

标签: c# .net clr callstack

我不是在寻找一种使用'SetData'方法将值与线程相关联的方法。

我需要存储一些仅在调用方法范围内存在的数据,可以是直接父级或在堆栈上进行的任何其他调用。 例如:

void SomeMethod()
{
   string someInfo = "someInfo";
   SomeOtherMethod();   
   object data = GetDataOnCurrentScope("someKey");
}

void SomeOtherMethod()
{
   SetDataOnParentScope("someKey", somevalue);
}

在这种情况下,'someInfo'局部变量和带有“someKey”键的数据集将在'SomeMethod'返回后消失。这样的事情可能吗?这可能违反了堆栈的规则,但谁知道某人是否有想法......

obs:目前,我想唯一的方法是让编译器在每个方法的调用堆栈的开头声明对字典的引用。该方法返回时,该字典有资格进行垃圾收集。

2 个答案:

答案 0 :(得分:1)

就你所提供的例子而言,我个人并不知道这将如何有用,从实施的角度来看,它将成为皇家PITA。

您在这里描述的是一个返回值的函数,那么为什么不使用返回类型并按照它们的设计方式使用方法呢?

答案 1 :(得分:0)

如果你想要从一个方法到另一个方法的范围,而不是其他地方,你通常会在第一个方法中创建一个对象并将其作为参数传递给第二个方法,或者让第二个方法返回第一个方法所需的对象。这取决于谁首先需要该对象。