2011-09-06 56 views
1

可能重複:
Static variables in C#初始化值只有一次

如果你有一個大的功能,並在中間的某個地方,你有一個應聲明僅在第一次的值其遭遇。

在C++中,你可以使用靜態爲此:

void func() { 
    ... 
    ... 
    static double startPosition = 0.0; 
    int var = startPositino - value; 
    startPosition = var; 
    ... 
} 

但在C#你不能有一個函數內部靜態變量,有一些其他的方式來做到這一點沒有宣佈它的功能之外?

+1

「如果你有一個很大的功能」那就是你的問題。 – svick

+0

問題不在於爲什麼c#不允許函數內的靜態變量 – Merni

+0

如果它是一個「私有靜態」字段,它對你有什麼影響嗎?這是您在C#中可以做的最好的選擇。 – Jon

回答

0
bool changed = true; 



void func() // the large function from the question (it wasn't specified what it does or what is called) 
{ 
    ..... 

    if(changed) 
    { 
     // here you initalize you variable (the static from the c++) 
     changed = false; 
    } 

    ..... 
} 
+0

你的代碼不會編譯。 'largeFunction()'的返回類型是什麼?它與這個問題又是如何相關的? – svick

+0

代碼示例確實成功地演示瞭如何在C#中完成這項工作的一般概念 - downvoting,因爲它不編譯「開箱即用」非常苛刻。 – MattDavey

+0

由於編譯錯誤,我沒有反悔。但是因爲答案並沒有真正回答任何問題。這只是一個沒有任何解釋的代碼示例,它不明顯與問題有什麼關係。 – svick