zoukankan      html  css  js  c++  java
  • 深入理解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(12,"Lucy");
    
      }
    
    }
    View Code

     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(12,"Lucy");//先调用两个参数的构造函数,再调用一个参数的构造函数,再执行一个参数的构造函数,在执行两个参数的构造函数
      }
    View Code

     二、部分类

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

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

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

    partial class Program
    
    {
    
        int num;
    
    }
    
    partial class Program
    
    {
    
       public void Test()
    
       {
    
             this.num=12;
    
       }
    
    }
    View Code

     三、理解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();
    
    }
    View Code

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

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

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

  • 相关阅读:
    函数
    字符编码和文件处理
    内置方法
    day6课后复习
    第四十篇、美颜篇
    第三十八篇、给UITabBar按钮的动画效果
    第三十九篇、NavBar动态隐藏、设置透明、毛玻璃效果
    第九篇、Swift的基本使用
    第三十七篇、毛玻璃效果
    第三十六篇、webService
  • 原文地址:https://www.cnblogs.com/ruanmou001/p/3310909.html
Copyright © 2011-2022 走看看