2011-09-06 69 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