一、this关键字作用

1、this表示当前运行中的对象

Eg:

public class Person

{

  public int age;

  public string name;

  public Person(int age,string name)

  {

     this.age=age;//把传递进来的12赋值给当前运行在内存中的对象的age属性,下同

     this.name=name;

     Console.WriteLine("两个参数的构造函数被调用了");

  }

  static void Main(string[] args)

  {

     Person p=new Person(,"Lucy");

  }

}

2、调用其他的构造函数

如上例再加上:

public Person(int age)

{

  this.age=age;

  Console.WriteLine("只有一个参数,并且参数类型是int类型的构造函数被调用了");

}

//this调用

public Person(int age,string name):this(age)

{ //this.age=age; this.name=name;

     Console.WriteLine("两个参数的构造函数被调用了");
}
//调用 static void Main(string[] args) {
Person p=new Person(,"Lucy");//先调用两个参数的构造函数,再调用一个参数的构造函数,再执行一个参数的构造函数,在执行两个参数的构造函数
}

 二、部分类

1、必须在同一个命名空间中,类的名字要一致,被partial修饰的类叫做部分类,或伙伴类。

2、C#编译器在编译伙伴类的时候会编译成1一个类,所以在另外1个伙伴类中定义的变量可以在这个伙伴类中方法。

3、作用是分开管理,便于维护。

partial class Program

{

    int num;

}

partial class Program

{

   public void Test()

   {

         this.num=;

   }

}

 三、理解null

1、局部变量的值类型存在栈里面,引用类型存在堆里面。成员字段,不管是引用类型还是值类型都是存在堆里面对象里面。

2、理解一下代码

public class Person

{
string name; public Dog dog=new Dog(); } public class Dog { public void Shot() { Console.WriteLine("旺旺"); } } static void Main(string[] args) { Person d=new Person(); d.dog.Shot(); }

3、只有引用类型的变量的值才能为null,值类型不能,引用类型的变量的值为null,就代表变量不指向空间中任何对象。

Person p=null;

Person.name="jack";//p变量没有指向任何对象,所以不能成功赋值,这时候会报“未将对象引用设置到对象的实例”

声明:以上内容均属软谋原创,如需转载,请注明出处。

深入理解C#中this/partial/null的使用的更多相关文章

  1. 深入理解C#中的异步(一)——APM模式EAP模式

    深入理解C#中的异步(一)--APM模式EAP模式 目录 深入理解C#中的异步(一)--APM模式EAP模式 1 使用异步编程的原因 2 异步编程模式 2.1 APM模式 2.1.1 APM模式示例代 ...

  2. 如何理解T-SQL中Merge语句(二)

    写在前面的话:上一篇写了如何理解T-SQL中Merge语句,基本把Merge语句要讲的给讲了,在文章的后面,抛出了几个结,当时没有想明白怎么去用文字表达,这一篇就来解答一下这几个结,又是一篇“天马行空 ...

  3. 理解Java中的弱引用(Weak Reference)

    本篇文章尝试从What.Why.How这三个角度来探索Java中的弱引用,理解Java中弱引用的定义.基本使用场景和使用方法.由于个人水平有限,叙述中难免存在不准确或是不清晰的地方,希望大家可以指出, ...

  4. 深入理解spring中的各种注解

    Spring中的注解大概可以分为两大类: 1)spring的bean容器相关的注解,或者说bean工厂相关的注解: 2)springmvc相关的注解. spring的bean容器相关的注解,先后有:@ ...

  5. 理解javascript中的策略模式

    理解javascript中的策略模式 策略模式的定义是:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换. 使用策略模式的优点如下: 优点:1. 策略模式利用组合,委托等技术和思想,有效 ...

  6. 深入理解spring中的各种注解(转)

    Spring中的注解大概可以分为两大类: 1)spring的bean容器相关的注解,或者说bean工厂相关的注解: 2)springmvc相关的注解. spring的bean容器相关的注解,先后有:@ ...

  7. 深入理解Android中View

    文章目录   [隐藏] 一.View是什么? 二.View创建的一个概述: 三.View的标志(Flag)系统 四.MeasureSpec 五.几个重要方法简介 5.1 onFinishInflate ...

  8. 深入理解Java中的不可变对象

    深入理解Java中的不可变对象 不可变对象想必大部分朋友都不陌生,大家在平时写代码的过程中100%会使用到不可变对象,比如最常见的String对象.包装器对象等,那么到底为何Java语言要这么设计,真 ...

  9. 深入理解C#中的IDisposable接口

    写在前面 在开始之前,我们需要明确什么是C#(或者说.NET)中的资源,打码的时候我们经常说释放资源,那么到底什么是资源,简单来讲,C#中的每一种类型都是一种资源,而资源又分为托管资源和非托管资源,那 ...

随机推荐

  1. 第K顺序统计量

    1.第K顺序统计量概念 在一个由n个元素组成的集合中,第k个顺序统计量是该集合中第k小的元素.例如,最小值是第1顺序统计量,最大值是第n顺序统计量. 2.求Top K元素与求第K顺序统计量不同 Top ...

  2. windows下rundll32介绍

    最近看书介绍rundll32可以加载dll文件并执行其中导出函数,在MSDN中我们可以看到绍http://support.microsoft.com/kb/164787/zh-cn rundll32调 ...

  3. 数据结构:二级指针与Stack的数组实现

    [简介] Stack,栈结构,即传统的LIFO,后进先出,常用的实现方法有数组法和链表法两种.如果看过我上一篇文章<数据结构:二级指针与不含表头的单链表>,一定会看到其中的关键在于,利用v ...

  4. [BILL WEI] SQL 巧用临时表

    在写sql 的时候,我们有时候,只需要拿出某些特定的数据,去跟一些表进行关联,但是如果直接通过表关联的话,可能拿到 的数据有冗余,这个时候,我们就可以巧用临时表,讲自己需要的特定数据筛选出来,然后组成 ...

  5. Shell 脚本编程

    Shell 两个数据比较取差异 flag=0 local array1=("a" "b") local array2=("a" " ...

  6. Git branch (分支学习)

    以前总结的一些git操作,分享在这里. Git 保存的不是文件差异或者变化量,而只是一系列文件快照.   - 列出当前所有分支 git branch <--merge> | <--n ...

  7. 【原】Spark Rpc通信源码分析

    Spark 1.6+推出了以RPCEnv.RPCEndpoint.RPCEndpointRef为核心的新型架构下的RPC通信方式.其具体实现有Akka和Netty两种方式,Akka是基于Scala的A ...

  8. normalization归一化

    简单的举个例子:一张表有两个变量,一个是体重kg,一个是身高cm.假设一般情况下体重这个变量均值为60(kg),身高均值为170(cm).1,这两个变量对应的单位不一样,同样是100,对于身高来说很矮 ...

  9. ACM2028

    Lowest Common Multiple Plus Problem Description 求n个数的最小公倍数.   input 输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n ...

  10. centos6.4 yum kvm

    1. 安装软件包:   yum -y install virt-manager; yum install qemu-kvm  yum install libvirt yum install libvi ...