深入理解C#中this/partial/null的使用
一、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的使用的更多相关文章
- 深入理解C#中的异步(一)——APM模式EAP模式
深入理解C#中的异步(一)--APM模式EAP模式 目录 深入理解C#中的异步(一)--APM模式EAP模式 1 使用异步编程的原因 2 异步编程模式 2.1 APM模式 2.1.1 APM模式示例代 ...
- 如何理解T-SQL中Merge语句(二)
写在前面的话:上一篇写了如何理解T-SQL中Merge语句,基本把Merge语句要讲的给讲了,在文章的后面,抛出了几个结,当时没有想明白怎么去用文字表达,这一篇就来解答一下这几个结,又是一篇“天马行空 ...
- 理解Java中的弱引用(Weak Reference)
本篇文章尝试从What.Why.How这三个角度来探索Java中的弱引用,理解Java中弱引用的定义.基本使用场景和使用方法.由于个人水平有限,叙述中难免存在不准确或是不清晰的地方,希望大家可以指出, ...
- 深入理解spring中的各种注解
Spring中的注解大概可以分为两大类: 1)spring的bean容器相关的注解,或者说bean工厂相关的注解: 2)springmvc相关的注解. spring的bean容器相关的注解,先后有:@ ...
- 理解javascript中的策略模式
理解javascript中的策略模式 策略模式的定义是:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换. 使用策略模式的优点如下: 优点:1. 策略模式利用组合,委托等技术和思想,有效 ...
- 深入理解spring中的各种注解(转)
Spring中的注解大概可以分为两大类: 1)spring的bean容器相关的注解,或者说bean工厂相关的注解: 2)springmvc相关的注解. spring的bean容器相关的注解,先后有:@ ...
- 深入理解Android中View
文章目录 [隐藏] 一.View是什么? 二.View创建的一个概述: 三.View的标志(Flag)系统 四.MeasureSpec 五.几个重要方法简介 5.1 onFinishInflate ...
- 深入理解Java中的不可变对象
深入理解Java中的不可变对象 不可变对象想必大部分朋友都不陌生,大家在平时写代码的过程中100%会使用到不可变对象,比如最常见的String对象.包装器对象等,那么到底为何Java语言要这么设计,真 ...
- 深入理解C#中的IDisposable接口
写在前面 在开始之前,我们需要明确什么是C#(或者说.NET)中的资源,打码的时候我们经常说释放资源,那么到底什么是资源,简单来讲,C#中的每一种类型都是一种资源,而资源又分为托管资源和非托管资源,那 ...
随机推荐
- 安装qc 出现error An error occurred while attempting to connect to the database.
When trying to install mercury quality center starter edition 9.0 on Windows XP media center, I am g ...
- SDWebImage源码解读之SDWebImageDownloader
SDWebImage源码解读之SDWebImageDownloader 第八篇 前言 SDWebImageDownloader这个类非常简单,作者的设计思路也很清晰,但是我想在这说点题外话. 如果有人 ...
- 【CSS】Beginner2:Selectors, Properties, and Values
1.Whereas HTML has tags,CSS has selectors. 2.Selector{ properties:value; properties2:value2; } 3 ...
- 解决 MyEclipse 10 中 JSp页面 “return false” 报错问题
1.MyEclipse ->. Preferences 2.validation ->>找到JavaScript validator for Js files builder 下面 ...
- linux进程的几种状态
Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态. Linux进程状态:R (TASK_RUNNING),可执行状态. 只有在该状 ...
- eclipse tomcat内存溢出,加大内存
保存图片失败,请点击这里获得详细信息. 加入 -Xms256M -Xmx512M -XX:PermSize=256m -XX:MaxPermSize=512m
- extjs Cannot read property 'dom' of null
如果你的EXTJS报错: Cannot read property 'dom' of null,那就有可能是因为你的HTML或者JSP文件中的BODY标签里面少了个东西比如代码是: <html& ...
- 使用ProcDump在程序没有响应时自动收集dump
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:使用ProcDump在程序没有响应时自动收集dump.
- CSS Grid layout布局
CSS Grid布局 (又名"网格"),是一个基于二维网格布局的系统,主要目的是改变我们基于网格设计的用户接口方式.你只需要定义一个容器元素并设置display:grid,使用gr ...
- jbpm4.4 demo1
package cn.itcast.a_helloworld; import java.util.List; import org.jbpm.api.Configuration; import org ...