科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件C#锐利体验(四)

C#锐利体验(四)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

组件编程不是对传统面向对象的抛弃,相反组件编程正是面向对象编程的深化和发展......

作者:李建忠 来源:Microsoft 2007年11月14日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
对象与this关键字

  类与对象的区分对我们把握OO编程至关重要。我们说类是对其成员的一种封装,但类的封装设计仅仅是我们编程的第一步,对类进行对象实例化,并在其数据成员上实施操作才是我们完成现实任务的根本。实例化对象采用MyClass myObject=new MyClass()语法,这里的new语义将调用相应的构建器。C#所有的对象都将创建在托管堆上。实例化后的类型我们称之为对象,其核心特征便是拥有了一份自己特有的数据成员拷贝。这些为特有的对象所持有的数据成员我们称之为实例成员。相反那些不为特有的对象所持有的数据成员我们称之为静态成员,在类中用static修饰符声明。仅对静态数据成员实施操作的称为静态函数成员。C#中静态数据成员和函数成员只能通过类名引用获取,看下面的代码:

using System;
class A
{
    public int count;
    public void F()
    {
        Console.WriteLine(this.count);
    }

    public static string name;
    public static void G()
    {
    Console.WriteLine(name);
    }
}
class Test
{
    public static void Main()
    {
        A a1=new A();
        A a2=new A();
        a1.F();
        a1.count=1;
        a2.F();
        a2.count=2;

        A.name="CCW";
        A.G();
    }
}

  我们声明了两个A对象a1,a2。对于实例成员count和F(),我们只能通过a1,a2引用。对于静态成员name和G()我们只能通过类型A来引用,而不可以这样a1.name,或a1.G()。

  在上面的程序中,我们看到在实例方法F()中我们才用this来引用变量count。这里的this是什么意思呢?this 关键字引用当前对象实例的成员。在实例方法体内我们也可以省略this,直接引用count,实际上两者的语义相同。理所当然的,静态成员函数没有 this 指针。this 关键字一般用于从构造函数、实例方法和实例访问器中访问成员。

  在构造函数中this用于限定被相同的名称隐藏的成员,例如:

class Employee
{
public Employee(string name, string alias)
{
    this.name = name;
    this.alias = alias;
    }
}

  将对象作为参数传递到其他方法时也要用this表达,例如:

CalcTax(this);

  声明索引器时this更是不可或缺,例如:

public int this [int param]
{
   get
   {
    return array[param];
   }
   set
   {
    array[param] = value;
   }
}
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章