• C#第二讲


    一、值类型,引用类型

        1、值类型:所有数值类型是值类型(int,float,double,枚举,布尔类型,结构,引用的地址,...等数值型值)

           A、所有的值类型是储存在栈里面。

           B、值类型的赋值,就是值的拷贝。

        2、引用类型:对象,字符串,object,数组,...等有复杂模型的值

           A、引用类型的值储存在堆里面的,栈里面储存的是它的引用地址。

           B、引用类型的赋值实际上就是地址的拷贝。

        3、类成员的调用方法

           A、要去调用一个雷里面的非静态成员(属性【也叫字段】,方法),就要通过累的一个实例对象来调用。

           B、类里面的静态成员(用static标注的成员)是只需通过类直接调用。

        4、由类生成实例化对象时内存状态

           A、类生成实例化对象时将所有非静态成员全部生成在堆里面,成员中的方法是储存在方法区,堆里面只存储方法的地址。

           B、类中的静态成员单独储存在静态区中,所以不需要实例化直接通过类区调用。

           C、当去实例化一个类的对象的时候,首先会在堆里面检索该类型的对象是否存在,如果存在就拷贝一份来做新的实例。

           ** 实例化对象时类里面的值类型和引用类型都会储存在堆里面。

        5、装箱、拆箱

           值类型转换成引用类型叫装箱。

           如:int i=2;                        //值类型变量i

                Object j=(object)i;         //把值类型变量i转换成object类型变量j,此时j里面的值为"2"。

           引用类型转换成值类型叫拆箱。

           如:Object j="123";            //在object变量j里储存字符型数据123

                 int I=(int)j;                  //把object变量j转换成int类型变量i,此时i里面的值为123。

        6、变量类型

           全局变量:类里面在方法外面的变量

           局部(成员)变量:在方法里面的变量

           静态变量:用static标注的全局变量或局部(成员)变量

        7、显示转换和隐式转换

           隐式转换没有性能损耗,显示转换有性能损耗。

        8、【:?】和【??】的用法

           int i = a > b ? 10:20;   //当a>b时i取值10,否则i取值20。

           string s = a ?? b          //当a为null时s取b的值。

        

    二、字符串

        1、字符串转换成字符数组

           string = "sdfhiudshfoiuhfoiuewhf"

           char[] a = s.ToCharArray();          //ToCharArray时C#中获得字符数组的方法,在jq中是Split来获得字符数组。

        2、Compare方法

           strA < strB 则返回-1(负值)

           strA = strB 则返回0

           strA > strB 则返回1(正值)

           ** 字符串比较时比较的是同一位置的ASCII码的大小。

        3、Equals方法

           判断两个字符串是否相同,如果相同返回值为true,否则为false。

        4、定位字符串

           StartWith/EndWith         判断一个字符串是否以一个字符串开头/结尾,返回值true/false

           indexOf/LastindexOf      某个指定的字符或字符串第一次(最后一次)出现的位置

        5、截取字符串

           string.Substring(起始位置[,截取长度])    //截取string中起始位置开始的指定长度。

           string s1 = "abcdfeghijklmn";

           string s = s1.Substring(3, 2);              //起始位置是从0开始的,结果是【df】。

        6、插入和填充字符串

           A、insert方法

              string str1 = "hello ";

              string str2 = "hi world";

              string str3 = str2.Insert(3, str1);     //结果是【hi hello world】。

           B、PadLeft/PadRigth方法

              string str1="hi";

              string str2=str1.PadLeft(4,'@')           //目标字符串长度不足时用指定字符[@]来填充左边,结果是【@@hi】。

              string str2=str1.PadRigth(4,'@')         //目标字符串长度不足时用指定字符[@]来填充右边,结果是【hi@@】。

        7、删除和剪切字符串Remove方法

           A、Remove(起始位置,删除的数量)           //在字符串的起始位置开始删除指定数量字符。

              string str2 = "hi world";

              string str3 = str2.Remove(0, 3);         //结果是world。

           B、Trim、TrimStart、TrimEnd方法

              Char[] str1={'@','#','$',' '};

              string str2=" @China$# ";

              string str3=str2.Trim(str1);                //在str2中删除所有开始和结尾字符满足str1数组中符合的字符,如果没有

    指定str1就默认去掉前后空格,本例结果是【Chain】。

           C、CopyTo方法

              string str1="China";

              char[]str2=new char[100];

              str1.CopyTo(0,str2,0,3);                    //CopyTo的参数:要复制的字符的起始位置,目标数组,指定目标数组中开始

                                                      存放的位置,要复制的字符个数。本例结果是数组的0,1,2元素中存有Chi。

           D、替换字符串

              string str1="hello";

              string str2=str1.Replace("ll","r");      //str1中的【ll】字符串用字符串【r】来替换。本例结果是【hero】。

           E、格式化字符串

              string.Format()                           //将指定字符串中的每个格式项替换为相应对象的值的文本等效项。

              Console.WriteLine("{0,10}  {1,10} ", "Decimal", "Hex");

               //{0,10}中第一个参数表示第0位置的替代项,第二个参数是为该项留出10个字符位,省略第二个参数则按替代内容

                 长度显示。本例结果是【   Decumal       Hex】

              string str1= String.Format("{0,10:G}: {0,10:X}", -32768);

               //{0,10:G}中第一个参数表示第0位置的替代项,第二个参数是为该项留出10个字符位,冒号后面的参数是指定数据

                 格式:G是字符串型值,F是保留小树后两位的字符串型数字,D是10进制数,X是16进制数。本例结果是【    -32768      8000】

     

    三、StringBuilder

        1、字符串拼凑

           耗费比较大的资源。

        2、StringBuilder

           StringBuilder sb =new StringBuilder();

           sb.Append("aaa");

           sb.Append("bbb");              //结果string sb中内容变为aaabbb。

        

  • 相关阅读:
    新模板电子版发布
    FZU 1686 神龙的难题 (重复覆盖)
    HDU 2295 Radar (重复覆盖)
    ZOJ 3209 Treasure Map (Dancing Links)
    HUST 1017
    《微信小程序商城开发实战》唐磊,全网真实评价截图,不吹不黑,全部来自网友的真实评价
    《微信小程序商城开发实战》笔者的新书,欢迎各位粉丝上京东购买
    ***ThinkPHP中的常用方法汇总总结:M方法,D方法,U方法,I方法
    ***微信小程序学习文档和资料归档收集
    ***OneinStack交互安装FAQ和管理服务常用命令
  • 原文地址:https://www.cnblogs.com/huang3/p/4917996.html
Copyright © 2020-2023  润新知