美文网首页
c# 句法和类型

c# 句法和类型

作者: 柒轩轩轩轩 | 来源:发表于2019-07-11 22:34 被阅读0次

类型

  • 类型定义了一个值的蓝本
  • 变量是一个存储位置,不同时期可能存储不同的值 (常量const 永远表示相同的值)
  • c#里所有的值都是类型的实例,值的含义,变量可能拥有的值是什么,都由它的类型决定

自定义类型

可以使用原始类型来构建复杂类型
类型的成员:数据成员 函数成员

构造函数和实例化

  • 数据是通过实例化一个类型来创建的
  • 预定义的类型直接写Literal就可以被实例化了
  • 自定义类型则通过new操作符来创建实例

实例成员vs静态成员

  • 操作于类型实例的数据成员和函数成员都交实例成员
  • 操作于类型而不是类型实例的数据成员和函数成员叫做静态成员 (static)
  • 静态类static class的所有成员都是静态de

隐式转换(implicit)vs 显式转换(explicit)

  • implicit不丢失精度的转换 位数低向位数高的转换 子类向父类转换
  • explicit有可能会丢失精度 位数高向位数低 需要手动

值类型 vs 引用类型

  • 值类型所有的内置类型(数值,字符,bool)和自定义的struct和enum
  • 引用类型包含所有的class,数组delegate, interface类型,包括字符串
  • 他们的根本区别在于处理内存的方式
  • 值类型的赋值: 值类型实例的赋值动作总是复刻了该实例
  • 引用类型的变量、常量
  • 给引用类型的变量赋值:复制引用,而不是对象实例
  • 允许多个变量引用同一个对象

值类型

  • 数值型
    -- signed interger(sbyth,short, int, long)
    -- unsigned (byte, ushort, uint, ulong)
    -- 实数 (float, double, decimal)
  • bool
  • char

引用类型

  • string
  • class

值类型:

public struct Point {
  public int X;
  public int Y;
}

static void Main() 
{
Point p1 = new Point();
p1.X = 7;
Point p2 = new Point();
p1.X = 9;
//p1.X = 9
//p2.X = 7

引用类型

public class Point {
  public int X;
  public int Y;
}

static void Main() 
{
Point p1 = new Point();
p1.X = 7;
Point p2 = new Point();
p1.X = 9;
//p1.X = 9
//p2.X = 9

Null

  • null是一个Literal
  • 可以把null 赋值给引用,表示该引用不指向任何一个对象

存储开销

值类型

  • 值类型的实例所占的内存 = 他的字段需要内存的总和
  • CLR会把类型内的字段大小设置为该字段实际大小的整数倍

引用类型

  • 需要为 引用和对象单独分配内存
  • 对象所占内存 = 其字段所占内存总和 + 额外的管理开销
  • 每个对象的引用还需要额外的4/8个字节

相关文章

  • c# 句法和类型

    类型 类型定义了一个值的蓝本 变量是一个存储位置,不同时期可能存储不同的值 (常量const 永远表示相同的值) ...

  • 第一部分:C#语言基础

    第1章 C#类型基础 C#中的两种类型:值类型和引用类型 1.1 值类型和引用类型 值类型包括了结构和枚举,引用类...

  • C#语言入门详解006

    006 C#类型、变量与对象详解 目录 *什么是类型*类型在C#语言中的作用*C#语言的类型系统*变量、对象与内存...

  • C# 值类型和引用类型的区别

    C#里把数据类型分为两大类,值类型和引用类型 值类型 值类型就是包含实际数据的量,当定义一个值类型的变量时,C#会...

  • C# 值类型和引用类型的区别

    C#里把数据类型分为两大类,值类型和引用类型 值类型 值类型就是包含实际数据的量,当定义一个值类型的变量时,C#会...

  • C# 基础——托管类型和非托管类型

    在介绍 C# 的托管类型和非托管类型之前,我们先来说说 C# 的类型体系以及各种类型在内存(虚拟内存)中的存储方式...

  • C#之托管与非托管资源

    C#中的数据类型 C#中的所有类型都是(直接或间接)从System.Object类型派生的。C#的类型被分成两大类...

  • 第一天:C# 值类型、引用类型、装箱与拆箱

    C#中类型分为两类: 值类型(Value Type) 引用类型(Reference Type) 值类型和引用类型是...

  • 10.18学习总结

    今天学习完了c#语言基础,包括类型转换(Parse和To string),装箱与拆箱(值类型和引用类型) ,...

  • C#——类的定义与使用(2)

    值类型和引用类型 从数据存储的角度,C#的数据类型可以分为值类型(value type)和引用类型(referen...

网友评论

      本文标题:c# 句法和类型

      本文链接:https://www.haomeiwen.com/subject/ozwqkctx.html