这是来自与aspx文件关联的c#.net(.aspx.cs)文件 为什么“这个”没问题,但“这个”(在另一种方法中)不是? 我包含了一个快照图像,以显示第二种方法中的红线,以显示编译器不喜欢第一种方法中没有显示错误的内容。
答案 0 :(得分:12)
this
用于引用类的当前实例
在静态方法中,没有当前实例可供引用。
在第一个示例中,它引用了Resource_Windows_ContractEdit类的当前实例
在第二个示例中,该方法是静态的,因此应该在没有类实例的情况下调用它。因此,在静态方法中,您无法使用this
一个人为的例子
class Example1
{
// static. could be used by static methods and it is shared between all instances
private static int counter = 0;
// instance variable, exists with different indipendent storage for every instance
private int v;
public Example1()
{
// We can use the static variable because it is shared between all instances..
counter = counter + 1;
}
public int SumValue(int x)
{
// Sum only for the first 10 instances of this class..
// Yes weird, but it is just a contrived example
if(Example1.counter < 10)
this.v = this.v + x:
return this.v;
}
// Cannot use the this keyword neither the instance internal variables
// Could use the static variables
public static int GetCurrentInstanceCounter()
{
return counter;
}
}
void Main()
{
Example1 a = new Example1();
// a is an instance of class Example1 and could use the this keyword
int result = a.sumValue(10);
Console.WriteLine(result.ToString());
// GetCurrentInstanceCounter is static, no instance required to call it, just the class name
int c = Example1.GetCurrentInstanceCounter();
Console.WriteLine("Created " + c.ToString() + " instances of Example1");
}
答案 1 :(得分:2)
因为这是一种静态方法。
关键字this
是指在非静态方法成员的上下文中的类型实例。
静态成员不属于任何特定实例 - 它们属于类本身。因此,由于没有要引用的实例,因此没有this
答案 2 :(得分:1)
由于静态成员函数存在于类级别而不是对象的一部分,因此它们没有此指针。
MSDN this链接