深入理解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#中的每一种类型都是一种资源,而资源又分为托管资源和非托管资源,那 ...
随机推荐
- 微信公共服务平台开发(.Net 的实现)2-------获得ACCESSTOKEN
成为了开发者之后微信平台会给您appid和secret,在订阅号中是没有的,所以因该申请一下服务号 有了ACCESSTOKEN才能做添加菜单,上传/下载图片等功能 private string Get ...
- [Stephen]关于Ext.net fileupload 的兼容性解决问题
在firefox下,利用fileupload上传图片后,通过后端将image 的src路径进行更新,刷新前段界面显示没有问题. 但是在以IE为内核的360中,这种上传后的更新导致一个命名为Action ...
- ambari安装过程中的问题汇总
今天重新安装ambari过程中,遇到了几个问题,耗费了我很长时间,在此记录一下 ambari重新安装可参考我之前的一篇随笔 http://www.cnblogs.com/6tian/p/4097401 ...
- HW3.8
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- POJ3080 - Blue Jeans(KMP+二分)
题目大意 求N个字符串的最长公共字串 题解 和POJ1226做法一样...注意是字典序最小的...WA了一次 代码: #include <iostream> #include <cs ...
- Block介绍(二)内存管理与其他特性
我们在前一章介绍了block的用法,而正确使用block必须要求正确理解block的内存管理问题.这一章,我们只陈述结果而不追寻原因,我们将在下一章深入其原因. 一.block放在哪里 我们针对不同情 ...
- hdoj 2612 Find a way【bfs+队列】
Find a way Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- Xcode5 上使用Base SDK iOS6程序和iOS6模拟器
Xcode 5默认自带SDK 7.0,升级Xcode 5后,Xcode.5就没了,这样我想编译SDK 6.x的程序就难办了(除非同时安装Xcode 4.x和Xcode 5.x两个版本Xcode).其中 ...
- Jquery JS 正确比较两个数字大小的方法
if(2 > 10) { alert("不正确!"); } 此比较不会是想要的结果:它相当于2 >1,把10的第一位取出来比较. ——————————————————— ...
- C#- WinForm获取 当前执行程序路径的几种方法
1.获取和设置当前目录的完全限定路径.string str = System.Environment.CurrentDirectory;Result: C:xxxxxx 2.获取启动了应用程序的可执行 ...