C#에서 메서드가 여러 호출간에 변수를 유지하도록 할 방법이 있습니까? 예를 들어 :메서드 호출간에 로컬 변수 유지
private int j = 0;
private void foo()
{
int i = calculateSomeValue() + j;
j = i;
}
내가 변수 j
다른 모든에 액세스 할 수있는 방법을 좋아하지 않는다 : 나는 이런 짓을 했을까
private void foo()
{
int j; //declare this so as it isn't destroyed with the stack frame.
int i = calculateSomeValue() + j;
j = i;
}
일반적인 방법은 다음과 같이 멤버 변수로 될 것 클래스의 메소드. 게다가 은 지저분 해 보인다. 메서드가 마지막으로 호출되었을 때 i
값을 추적하는 데 한 메서드에서만 사용될 때 멤버 변수를 정의한다.
멋진/깨끗한 방법으로 가능합니까? 아니면 멤버 변수 방식을 사용하고 잊어 버려야합니까?
클래스 필드 (또는 속성)로 정의하지 않고 j 클래스 범위를 지정하는 방법은 없다고 생각합니다. 다른 사람이 누구인지 알고 싶습니다. –
다른 방법들 중 관심이없는 상태가 있다면, 그 자체로 별도의 유형으로 분류 할 가치가 있는지 고려해보십시오. 그러나 일반적으로, 아니요, 당신은 절대적으로 인스턴스 변수를 가져야합니다. 그것은 대상의 상태의 일부입니다. –
나올 때 미니 클래스처럼 들립니다. –