| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3568 人关注过本帖
标题:【C#探讨】1:构造函数
只看楼主 加入收藏
temkqt
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2008-10-8
收藏
得分:0 
新手问个问题  
实例指的是什么
还有this不是一个指针吗 为什么不可以指向类
如果有错误败笑我
谢谢
2008-10-09 20:00
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
收藏
得分:0 
实例指的是类滴对象,this是当前对象滴引用。不可以指向类滴,否则便成了桥太守乱点鸳鸯谱了。


仁者乐膳,智者乐睡。我都爱~
2008-10-09 21:08
Wikor
Rank: 1
等 级:新手上路
威 望:1
帖 子:124
专家分:0
注 册:2008-3-12
收藏
得分:0 
支持下小仙!!
静态构造函数,使用static关键字定义的构造函数。该构造函数就属于类而不属于类的实例所有。
在程序中第一次用到某个类时,类的静态构造函数自动被调用,而且是仅此一次。静态的构造函数
通常用于对类的静态字段进行初始化。
2008-10-09 21:46
Wikor
Rank: 1
等 级:新手上路
威 望:1
帖 子:124
专家分:0
注 册:2008-3-12
收藏
得分:0 
还有,静态的构造函数不使用任何访问修饰符,也不存在静态析构函数

static AA()
{
}
2008-10-09 21:49
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
收藏
得分:0 
回复 14# Wikor 的帖子
呃。。虽然跑题了,还是说下吧,静态函数一般不属于我们操纵的范围,可以甭去理它,研究它木有意义。大家发帖前看下话题吧。。。。


仁者乐膳,智者乐睡。我都爱~
2008-10-09 22:13
gghao
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2008-8-31
收藏
得分:0 
回复 6# 小仙 的帖子
我写了一句有岐义的话害的楼主一晚没睡好,我有罪,我忏悔,我不好,我检讨!
“如果你写了一个任何形式的构造函数,那么系统都不会为你生成这个构造函数。”这句话的本意是如果我们自己为这个类写了个构造函数后,系统就不会给我们提供那个默认生成的构造函数了(就算你写的是错的),当然了错的肯定会报错了呵呵。

我发的那一帖主要意思是在讨论构造函数的继承问题。呵呵
楼下的继续
2008-10-09 23:03
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
收藏
得分:0 
我主要是讨论this()的问题。呵呵,经你这么一说就很有道理了。可是和主题有点悖离,不过欢迎积极讨论。我失眠不是你的错噢。。。我是失眠起来,迷迷糊糊看你的帖子,一下子昏了。呵呵


仁者乐膳,智者乐睡。我都爱~
2008-10-09 23:08
skyzoneskyzone
Rank: 1
等 级:新手上路
威 望:1
帖 子:137
专家分:0
注 册:2008-10-6
收藏
得分:0 
支持下小仙,这种方法我也觉得蛮好啊,大家互相交流才能提高嘛。而且还有一个共同的话题。
不过你的问题我不理解。不明白你的意思哎。你的this到底是指在哪里调用啊?
public class Point
{ public int x, y;
  public Point(int x, int y)
   {
     this.x = x;
      this.y = y;
    }
 }
public class Point3D: Point
{
   public int z;
   public Point3D(int x, int y, int z): base(x, y)
     {
       this.z = z;
     }
 }



====================================================
Point a = new Point(10, 20);
Point b = new Point3D(10, 20, 30);
2008-10-10 10:44
gghao
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2008-8-31
收藏
得分:0 
关于this

我个人简单的理解为this是指向当前对象的实例。
以下是来自MSDN的解释:
this 关键字引用类的当前实例。
以下是 this 的常用用途:
限定被相似的名称隐藏的成员,例如:
public Employee(string name, string alias)
{
    this.name = name;
    this.alias = alias;
}  
将对象作为参数传递到其他方法,例如:
CalcTax(this);

声明索引器,例如:
public int this [int param]
{
    get { return array[param];  }
    set { array[param] = value; }
}
由于静态成员函数存在于类一级,并且不是对象的一部分,因此没有 this 指针。在静态方法中引用 this 是错误的。

对于楼上仁兄的例子,可以这么理解,第二个类继承于第一个类,所以第二个类的前半部分和第一个类是完全一样的,他也包含x,y两个字段,故而你可以this(x,y,z)这么写,其实他指向的就是第二个类
2008-10-10 11:45
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
收藏
得分:0 
你们可以在编译器中运行一下在构造函数中,则可以显示当前类的构造函数。
public 构造函数()
:this()
{
}


仁者乐膳,智者乐睡。我都爱~
2008-10-10 15:00
快速回复:【C#探讨】1:构造函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021284 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved