zoukankan      html  css  js  c++  java
  • C#基础(1)

    1.byte,int等等,这些简单类型实际上是BCL基类库类型的别名。

    2.所有值类型都隐式地继承自System.ValueType类型(System.ValueType本身是一个类类型)。之所以说是“隐式地”,是因为在C#代码中,是看不见这个继承关系的,这个关系只有通过MSIL代码才可以看到,System.ValueType类型和所有的引用类型都继承自System.Object基类,  

    备注: 在C#多态中,不支持多重继承的,

    类型 继承 再继承
    int,struct,enum… System.ValueType System.Object
    引用类型 可以继承其他类 System.Object
         

    由于不存在多重继承,那么值类型(结构等等)本身就继承了System.ssValueType,就不能继承其他类

    3.值类型与引用类型在   线程堆栈(栈是一种后进先出的数据结构)以及堆(堆是用于为引用类型的实例(对象)分配空间的内存区域,在堆上创建一个对象,会将对象地址传给栈上的变量,反过来叫变量指向对象,或者变量引用此对象) 的存放

    值类型(变量本身包含了值类型的全部字段),会分配在线程堆栈上;注意一个细节:只有对变量进行操作,才会进行入栈;

    4. .NET的一个约束:所有的元素使用前都必须初始化。

    //Demo1
    int i;
    Console.WriteLine(i);
    //Demo2
    public class Person
    {
        int ID{get;set;}
        string Name{get;set;}
        List<Book> Books {get;set;}   //定义某个集合作为属性
    }

    Demo1:error  使用未赋值的变量

    Demo2: 在多次使用Person类中,vs会经常提示警告:会出现“NullReferenceException异常”,当然这个异常也分使用场景,但非常希望,你能在Person类的构造函数中,实例化Books,this.Books = new List<Book>();这是个好习惯。

    5.结构类型 struct

    //定义
    public struct ValPoint
    {
        public int x;
        public void Blank()
    }
    
    //调用
    ValPoint vPoint1;
    vPoint1.Blank();
    Console.WriteLine(vPoint);

    在调用中报错,“使用了未赋值的局部变量”,int x,没赋值。

    假设:

    //定义  3 个局部变量
    public struct ValPoint
    {
        public int x;
        public int y;
        public int z;
        public void Blank()
    }

    那么,我们必须初始化 x,y,z 。还是那个原则:.NET的所有元素,都必须先初始化。

    解决这个问题可以通过这样一种方式:编译器隐式地位结构类型创建无参数的构造函数。这个构造函数中会对结构成员进行初始化;所有值类型成员被赋予0或者相当于0的值,所有引用类型被赋予null值;

    //调用
    ValPoint vPoint1 = new ValPoint()

    new的作用? 实例化?分配内存?  不是,注意:结构struct 变量本身就代表一个实例。  这里仅仅调用当前结构的默认构造函数,初始化结构变量中的所有字段。

    //直接调用
    Console.WriteLine((new ValPoint).x);

    .x  前面是个对象,这里会创建一个临时变量,没有名称,然后再使用结构的默认构造函数对临时变量进行初始化。

  • 相关阅读:
    Dynamics CRM安装教程一:域环境准备
    C#判断日期是否合法
    Visual Studio 2015 无法加载.Net FrameWork4.6.2
    Dynamics CRM产生公共签名,避免每次插件换环境重新输入签名密钥账号密码
    Dynamics CRM使用JS隐藏自定义按钮
    <3>Python开发——列表(list)
    <2>Python开发——字符串(str)
    <1>Python开发——基础入门
    Sed命令详解
    国内搭建Minikube测试环境
  • 原文地址:https://www.cnblogs.com/zychengzhiit1/p/4811978.html
Copyright © 2011-2022 走看看