zoukankan      html  css  js  c++  java
  • 数据类型

    五大数据类型:

    类 结构体 枚举 接口 委托

    值类型(放在栈,基类是ValueType,分配一个值)和引用类型(放在堆,基类除了ValueType都可以。指向一个内存位置)

    值类型在越出定义的作用域时消失,引用类型当堆被垃圾回收时。

    值类型赋值给另一个的时候,就是对字段成员进行复制。

    引用类型是在内存中重定向引用变量的指向。

    C#中定义的值类型包括原类型(Sbyte、Byte、Short、Ushort、Int、Uint、Long、Ulong、Char、Float、Double、Bool、Decimal)、枚举(enum)、结构(struct)

    引用类型包括:对象、类、数组、接口、委托、字符串(String)等。

    字符串是不可变的。值会存在堆中。

    string s1=new string("111");

    会开辟两个对象,一个存内存地址在栈中,一个存数据放入堆中。

    String类型的方法其实返回了一个按修改格式的新字符串对象。

    在调用了大写之后,String字符串依旧没有变换。

    C#可空类型 null用来建立一个空的对象引用,值类型不能被赋空。

    枚举

    在创建系统的时候,创建一组符号名来对应已知的数字值会很方便(符号代替数字)。 例如:

    Enum EmpType

    {

    Manager,//默认情况从0开始, 也可以自己赋值 但也不可以不连续

    Grunt,//1

    Contractor,//2

    VicePresident,//3

    }

    使用枚举

    在上面的枚举中,必须以枚举名(EmpType)来设置值。

    设置Grunt 

    根据枚举名 EmpType  emp=EmpType.Grunt; emp的值就是Grunt。

    StringBuilder

     StringBuilder sb = new StringBuilder("1111");//利用构造函数创建
                StringBuilder sb1 = new StringBuilder(20);//申请了一个占有20个字符大小的
                StringBuilder sb2 = new StringBuilder("11111", 20);//string字符串内容不可变动,如果字符串内容会频繁的变动,使用StringBuilder.
                sb.Append("2222222");
                sb.Insert(0, "0000");//在0位置加入,后面字符串向后移动
                sb.Remove(0,4);//从哪个位置开始移除,第二参数是移除的长度
                sb.Replace("2","3");//替换字符
                Console.WriteLine(sb.ToString());   
                Console.ReadKey();
    StringBuilder

    PS:对于字符串频繁的操作。我们建议使用StringBuilder,因为其在堆中开辟了一定大小的内存,如果增加字符串只需要往内存中添加不需要另外开辟内存空间,而string则会另外开辟内存存放新的字符串并将老的字符串复制过去。

  • 相关阅读:
    iOS API 概述
    iOS开发的一些奇巧淫技3
    iOS开发的一些奇巧淫技1&2
    iOS-一键拨号
    iOS层次架构
    简单block 和 代理
    iOS开发-单例GCD
    简单的归档、接档
    通知中心与本地通知
    安装linux centos 7.7 遇到 DRM:Pointer to TMDS table invalid
  • 原文地址:https://www.cnblogs.com/cdjbolg/p/11756655.html
Copyright © 2011-2022 走看看