首页 新闻 会员 周边 捐助

控制台程序与web项目中的this

0
悬赏园豆:15 [已解决问题] 解决于 2012-05-07 08:50

新建控制台程序,写个方法,在main方法中调用的时候,不能使用this直接调用。

但是在web项目中,我们在页面的后台代码(xx.aspx.cs)里却可以使用this调用该.cs里的方法。谁能告诉我这是为什么吗?

< >
分享
最佳答案
0

this表示当前类的实例,面向对象的基本理论。

main方法是程序的入口,前面有个static 静态方法,不依赖于任何对象实例,所以不能用。

你在webform某个页面中使用this,其实是那个页面类的实例...

收获园豆:15
丁码农 | 菜鸟二级 |园豆:437 | 2012-05-06 11:29
其他回答(2)
0

this跟程序是控制台程序还是web程序没有关系。this的含义是当前对象的实例,举例:

class A
{
      private string name;

      public void M()
      {
            this.name = "hi";
      }
}

当你创建一个实例:A a = new A(); 并且调用 a.M() 时,M里的那个this就代表当前实例a。而静态方法是不需要实例就可以调用的(这就是为什么你在main方法中不能用this,因为main方法是静态的),还是上面那个class A,我修改成:

class A
{
      private string name;
    
      public static void M()
      {
           //现在M是静态方法了
      }
}

那么就可以直接调用  A.M()  来执行这个方法,并不需要一个A的实例(上面代码中的a)了。因此在静态方法中不能使用this。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-04-17 11:05

那为什么在xx.aspx.cs类文件里,就可以直接使用this呢?

支持(0) 反对(0) 沐雪架构师 | 园豆:67 (初学一级) | 2012-04-17 12:46

@冰点の爱: xx.aspx.cs,里面也定义了一个类,你可以看到类似:

pubilc partial class MyPage : System.Web.UI.Page
{
     //这也是一个类
     public void Page_Load()
     {
            //这是一个实例方法
            //这里的this代表MyPage的一个实例
     }
}
支持(0) 反对(0) 水牛刀刀 | 园豆:6350 (大侠五级) | 2012-04-17 12:48

@水牛刀刀: 我的疑问就在这儿,这里为什么就可以直接使用this呢?

支持(0) 反对(0) 沐雪架构师 | 园豆:67 (初学一级) | 2012-04-17 12:51
2

因为main方法是静态方法,静态方法不能使用this

只会造轮子 | 园豆:2274 (老鸟四级) | 2012-04-17 11:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册