• .NET之C#


    快速过完C#,适合有Java或者C++基础的,主要关注和其它语言的差异

    • 内置类型
           sbyte a; //1
          byte b; //1
    
          short c; //2
          ushort d; //2
    
          int e; //4
          uint f; //4
    
          long g; //8 
          ulong h; //8
    
          float i; //4
          double j; //8
    
          decimal k; //16
    
          char l; //2
    
          string m;
    
          bool n; //1
    
    
    • 命名规则:以小写字母开头,除第一个单词之外,首字母大写
    • C#占位符:
    string myName = "treblez";
    string myAddress = "dongbeidaxue";
    char p = 't';
    string str = string.Format("I am {0},come from {1}", myName, myAddress);
    
    • 内存分析发现,C# string类型是一个指针,指向存储变量的位置,但是并非一一对应
    • 占位符的特殊用法:
    Console.WriteLine("{0:c}", 5);//用金钱格式输出
    Console.WriteLine("{0:d2}", 5);//位数填充
    Console.WriteLine("{0:f1}", 1.26);//以指定位数输出
    Console.WriteLine("{0:p0}", 0.1);//以百分数输出
    

    输出如下:
    ¥5.00
    05
    1.3
    10%

    • 转义符:/
    • CLS:公共语言规范,规定了.NET平台上运行语言所必需支持的规范,用以避免不同的语言特性产生的错误,实现语言间相互操作
    • CLR:公共语言运行库,程序运行环境,负责内存分配,垃圾收集,安全检查等
    • foreach:参考java的foreach
    • var :参考js的var和c++的auto
    • 参数数组语法糖:
    //参数数组 将变量置换为所需要的类型
      private static int Add(params int[] arr)
      {
          return 0;
      }
    
    • 一个有趣的差异:对于c++来说,string被放置在栈中,但是c#和java则是放置在堆中
    • 不要对C#做内存分析,虽然对于C++是好的习惯,但是C#并非直接操作内存
    • object关键字 仍然是栈引用堆
    object o1 = 1;
    object o2 = o1;
    o1 = 2;
    Console.WriteLine(o2);
    

    输出1

    • 引用参数 ref 关键字,标识函数参数,按照引用传递;传递之前必须赋值
    • 输出参数 out 关键字,标识函数参数,按照引用传递;在函数中必须为参数赋值;传递之前可以不赋值
    • GC回收垃圾占用性能,所以尽量少产生垃圾
    • 装箱:将值类型隐式转换为object类型
      拆箱:装箱的反过程
      装箱比较消耗性能
    int a = 1;
    object b = a;
    int c = (int)b;
    
    • 使用StringBuilder来进行字符串拼接,避过字符串不可变性产生的内存浪费
    • 永远使用StringBuilder,如果您需要频繁使用字符串的话
    • prop+tab tab
    • 通过静态构造函数初始化静态数据成员
    • ///描述方法
    • 结构体在栈中,并且含有自带的无参构造函数
    • 结构体将省出存放引用的空间
  • 相关阅读:
    三维体系、点、矢量
    在服务中创建用户进程的方法(C#版)
    C++批判(2)
    MFC五大批判
    Windows服务编写原理及探讨(一)
    Lua常用资源连接
    网友怒批“Linux难敌视窗新七大理由”之我见
    在VC++中实现同步Internet时间
    Lua脚本语法说明(修订)
    Lua 5.0 参考手册
  • 原文地址:https://www.cnblogs.com/treblez/p/13493616.html
Copyright © 2020-2023  润新知