c#中的static int

时间:2012-03-20 12:58:01

标签: c#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace LearnThread
{
    class Delay
    {
        public int timePass()
        {
            static int i=0;
            for(i=0; i<100;i++)
            {
                Thread.Sleep(1000);
            }
            return i;
        }
    }
}
  

错误:修饰符'static'对此项无效

为什么静态是错误的?我们不能使用static for int,因为我们可以在C语言中使用它?

4 个答案:

答案 0 :(得分:15)

您不能将本地范围的变量声明为static,这就是您正在做的事情。

您可以为类创建静态字段或静态属性(即它是类的成员),它将位于方法的外部

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace LearnThread
{
    class Delay
    {
        static int i=0;

        public int timePass()
        {
            for(i=0; i<100;i++)
            {
                Thread.Sleep(1000);
            }
            return i;
        }
    }
}

虽然,这段代码看起来有点笨......为什么在for循环迭代中使用静态字段呢?多次调用该方法可能会导致很多问题。我假设您要么通过玩疯狂的代码来学习C#,要么就是在尝试解决另一个问题并将这些代码投入其中。无论是那个还是......你做错了。 :)

答案 1 :(得分:1)

您无法在function内定义内的静态变量,仅在class级别。

答案 2 :(得分:1)

您不能在方法中使用静态变量,因为从方法体返回时它会超出范围。将其移至类级别,静态整数完全可用。

答案 3 :(得分:1)

  

静态变量:使用static修饰符声明的字段称为a   静态变量。之前就存在一个静态变量   执行静态构造函数。

     

要访问静态变量,您必须“限定”您要使用的位置   它。限定成员意味着您必须指定其类。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace LearnThread
{
    class Delay

    {
        static int i=0;

        public int timePass()
        {

            for(i=0; i<100;i++)
            {
                Thread.Sleep(1000);
            }
            return i;
        }
    }
}