gpt4 book ai didi

c# - 跨方法调用保留局部变量

转载 作者:行者123 更新时间:2023-11-30 21:46:07 24 4
gpt4 key购买 nike

在 C# 中有没有办法让一个方法在不同的调用中保留一个变量?例如:

private void foo()
{
int j; //declare this so as it isn't destroyed with the stack frame.
int i = calculateSomeValue() + j;
j = i;
}

我这样做的正常方法是使用这样的成员变量:

private int j = 0;
private void foo()
{
int i = calculateSomeValue() + j;
j = i;
}

我不喜欢如何在该类的所有其他方法中访问变量 j。另外,这种方式看起来很乱:定义一个成员变量,当它只在一个方法中使用时,它会跟踪上次调用该方法时i 的值。

这可能以一种漂亮/干净的方式实现吗?或者我应该只使用成员变量方式而忘记它?

最佳答案

您可以使用一个很小的嵌套类来封装它,如下所示:

public class Test
{
private int foo()
{
return nested.foo();
}

private int calculateSomeValue()
{
return 42;
}

readonly Nested nested = new Nested();

private class Nested
{
private int j;

public int foo()
{
int i = calculateSomeValue() + j;
j = i;
}
}
}

外部类中的方法将只能访问 Nested 的公共(public)成员,因此在本例中它们只能访问 foo() - j 不可访问。但请注意,Nested 中的方法可以访问外部类的所有私有(private)成员。

关于c# - 跨方法调用保留局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39513948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com