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语言中使用它?
答案 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;
}
}
}