zoukankan      html  css  js  c++  java
  • C#遗忘笔记--品味类型

    值类型一般有:int bool shor long float double decimal enum struct
    引用类型一般有:string object class interface int[] int[,] delegate
    值类型总是分配在它声明的地方
    引用类型总是分配在托管堆上
    catch{}相当于catch(object){}
    不能同时出现catch{}和catch(exception){}因为前面一个最通用
    (按引用传递)ref和out的区别在于,out必须在方法内部显示的赋值而ref不用,但ref必须初始化,而out不用,且需要注意的是out和不能实现重载
    可以用sizeof()获得值类型的大小
    struct声明的结构使用new和直接声明的区别在于,直接声明的没有完成初始化,无法得到值,且报错
    值类型都继承自System.ValueType,而System.ValueType又继承自System.Object,主要的区别在于ValueType从写了Equals方法,按位比较而不是按引用
    值类型的内存 不由GC控制,作用域结束时,值类型会自行释放
    值类型是密封的,因此值类型不可以作为基类,但可以继承接口
    接口中不能有静态(static)成员,不能有字段,不能有实现,不能什么类型(class delegate...),总的来说接口(abstract class)就只能有方法,事件,索引器,且方法默认是public abstract
    类型的比较通常有Equals() ReferenceEquals(obj,obj) ==/!=,值类型按位,引用类型按引用地址
    C# 允许用户自定义类型通过使用 operator 关键字定义静态成员函数来重载运算符。
    例如:
    public static bool operator ==(Person p1,Person p2){
    return true;
    }

    隐式转换:低级类型向高级类型的转换,需要注意的是值类型到引用类型也是隐式转换(装箱和拆箱)
    显示转换:也叫强制类型转换,高级类型
    还可以使用implicit(隐式转换)和explicit(显示转换)来定义转换规则
    例如:
    public static implicit operator int(Person d)
    {
    return d.age;
    }
    调用:
    Person p = new Person { age = 123 };
    int i = p;

    形参:被调用的参数
    实参:调用的参数

    Hold on, everything is possible.
  • 相关阅读:
    springboot2 整合redis
    springboot2 整合mongodb
    Springboot2 Vue 前后端分离 整合打包 docker镜像
    nginx常见问题总结
    nginx配置中root和alias的区别
    nginx高级用法
    nginx搭建代理服务器与负载均衡器
    nginx常规扩展功能
    nginx典型官方模块解释
    nginx默认配置文件解释
  • 原文地址:https://www.cnblogs.com/student-note/p/6812599.html
Copyright © 2011-2022 走看看