GC   Garbage Collection 垃圾回收器

    自动释放资源

关键字:

  new  1.创建对象

      2.隐藏从父类继承的同名函数

  using  1.引用命名空间

      2. using(FileStream fsRead = new FileStream(source, FileMode.Open, FileAccess.Read)      //自动释放资源

       {

        fsRead .Read(buffer,0, buffer.Length);

       }

  

计时:

  Stopwatch sw = new Stopwatch();

  sw.Start();

  sw.Stop();

  sw.Elapsed(); //取经过的时间

c#   也是强类型语言,变量定义时需要指定类型 

ojbect类:

  GetType()

  

var:  自动变量,对应c++中auto类型,根据值推断类型

    var 变量定义时必须指定值

   

格式化:

  {num:fmt} 先挖坑

  默认输出的结果是ToString()方法的结果,默认是对象的命名空间

随机数:

  Random r = new Random();

  int n = r.Next(0 -10);

数组:  

  定义:  [int[] ary;

  成员:  ary.length

函数:

  参数: ref out param

类:

  field字段

  property属性    避免field被直接访问(隐藏保护), 限制限定监控对field的输入输出

  method方法

  类对象是智能指针(引用)类型, 需要new分配空间才能使用, 会自动释放.

   实例(普通)成员:    对象实例名+ . 来访问

   静态成员:  类名+ . 来访问 ,静态函数只能访问静态成员,同c++

静态类:

  public static class

  应用场景:  1. 经常使用的函数封闭成工具类, 如Console

       2.整个项目中资源共享(静态资源存储区)

  不能创建对象, 只能用类名+.来访问成员

  进程结束才会释放资源.

  

构造函数:

  类默认有无参构造函数,如果提供了有参无参任意一个构造函数,则不会有默认构造

  显示调用其它构造可以解决多构造函数冗余,

  如: public Ctor(string name, int age):this(name)  

封闭, 继承, 多态

  继承属性和方法, 不继承私有field

  子类不继承父类构造函数

  继承的单根性: 一个子类只能继承一个父类

  继承的传递性

  父类有默认构造函数,如提供有参构造函数,父类默认构造就没有了

  子类构造时会先调用父类构造,默认调用默认构造,

  也可显示调用父类其它构造, 如   : base(xx)

里氏转换:

  子类对象可以赋值给父类对象

  如果父类对象中装的是子类对象,可以强转为子类对象

  判断:

    if (p is ClassA) {ClassA a = (ClassA) p;}

    ClassA a = p as ClassA;

    可以根据对象的真实类型,实现多类

  

析构函数

  替代gc 提前回收?

Collections 集合(容器):

  ArrayList: 

    Count: 实际包含个数

    Capacity:  容量,包含多分配的预留空间,

    Add, AddRange

    Insert

    Remove, RemoveAt, RemoveRange

    Sort

    Reverse

    Contains

  Hashtable:  键值对集合, 同c++中hashMap, 键必须唯一

    map[key] = value;   //没有则添加,有则替换值(效果同覆盖)

    Count 数量,不能用于遍历

    map.Add(1,"zhangsan");

    map.Add(false, "错误的");

    判断包含:

      ContainsKey(

    

    Console.Write(map[key])

    遍历用foreach, 大数据量时比普通循环效率高很多倍

    foreach (var item in map.Keys) {

      Console.WriteLine("key: {0}, value:{1}, item, map[item]);

    }

命名空间

  鼠标点

  alt+shift+f10

  

使用其它项目中的类的步骤

  添加引用项目

  添加引用命名空间

  

值类型 和 引用类型

  值类型: int, double, bool, char, decimal, struct, enum

  引用类型(指针): string, 数组, 自定义类

  区别:

  1.   存储位置不同, 值类型存储在栈上, 引用类型存储在堆上

  2.  在传递值类型和传递引用类型时,传递方式不一样

Path工具类
  Path.GetFileName(fullPath)
  .GetExtension()
  .GetFileNameWithExtension(fullPath)
  .GetDirectoryName(
  .GetFullPath(
  .Combine(@"c:\a\", "xx.exe")

File类:  只能操作小文件, 一次性读写
  Exists(path) 判断文件是否存在
  File.Create(@"c:\1.txt");
  File.Delete(@"c:\1.txt");
  File.Copy(@"c:\1.txt", @"c:\2.txt");
  File.Move(
  string[] ReadAllLines(string path) 读取文本文件到字符串数组中
  void WriteAllLines(string path,string[] strs) 将串数组逐行写到path指定的文件中,会覆盖
  string ReadAllText(string path) 读取文本文件到字符串中
  void WriteAllText(string path,string contents) 将contents写到path指定的文件中,会覆盖
  ReadAllBytes() Encoding.Default.GetString(byte[])
  WriteAllBytes() Encoding.Default.GetBytes(char*)
  AppendAllText(string path, string contents) 将文本添加到path文件中

  AppendAllLines(string path, string contents) 将文本添加到path文件中

  AppendText(string path, string contents) 将文本添加到path文件中

字符编码:
  ASC编码:
  ASCII编码:
  GB2312(国标)编码:
  Big5: 繁体字编码
  GBK: 既有简体又有繁体

  unicode编码
    utf-8: web应用, unicode的一种

  Encoding.UTF8.GetString(byte[])
  Encoding.Default.GetString(byte[])
  Encoding.GetEncoding("GB2312").GetString(byte[]), 所有编码
  Encoding.Default.GetString(byte[]) 数组转字符串
  Encoding.Default.GetBytes(char*) 字符串转数组

字符串:  

  \0结尾的char类型,只读数组,同c++

  @ 符号,后面的字符中'\' 代表'\'字符本身,不用作转义符

  不可变性, 只能修改引用不能修改引用位置的值, 无引用的字符串,(程序结束时)由gc回收

  成员属性和方法:

    Length

    ToUpper()  ToLower

    Equals(dst, StringComparison.OrdinalIgnoreCase) 忽略大小写

    Split()

      char [] chs = {' ', '_', '+','=',','};

      "a b  dfd _ + + ,,, fdf ".Split(chs, StringSplitOptions.RemoveEmptyEntries);

      StringSplitOptions.RemoveEmptyEntries 用于去掉替换时产生的空字符

    Replace

    Contains  判断包含

    Substring(

    Endwith(

    IndexOf(  LastIndexOf(

    Trim(  TrimStart(  TrimEnd(

    IsNullOrEmpty()

    Join(  将分割符放在每个数组后面

      string[] names = {"zhangsan", "lisi", "wangwu"};

      string str = string.Join("|", names);

      

      

StringBuilder

  大规模拼接字符串时使用,append(), toString()

待补:

C# 和 c++的语法不同点的更多相关文章

  1. PHP自动发邮件

    自动发邮件 使用了这个类http://bbs.php100.com/read-htm-tid-121431.html 因他用的php版本较老,用到了函数ereg_replace() 和 ereg() ...

  2. Apache Nginx URL 地址 重写

    URL重写这东西在工作中用了很多次了,但每次都忘记了要记得把知道的积累下来. 哎,要么认为没必要,要么就是没时间?! 一.Apache 篇 官方地址:http://man.chinaunix.net/ ...

  3. python语法与c++不同点

    代码结构由':'号和缩进 来标示. 函数: def 定义 不定参数: *args:   tarple可逐个传, 整体传, *拆包传 **kwargs dict可逐个传, 整体传, ** 拆包传, 有2 ...

  4. 【Java学习系列】第2课--Java语法及面向对象

    本文地址 分享提纲: 1. Java程序特点 1.1 基本语法 1.2 字符串 1.3 变量 1.4 Java数组 1.5 Java枚举 1.6 Java修饰符 1.7 Java编译制定在制定目录 2 ...

  5. Go语言程序设计(1)--基本语法

    第一个程序 package main import "fmt" func main() { fmt.Printf("Hello world") } 通过阅读这个 ...

  6. Java进击C#——语法之基础

    本章简言 上一章讲到关于项目工程开发常用的知识点,有了前面俩章的介绍之后.本章正式开始介绍关于C#的基础语法.我们都很清楚C#也是面向对象的计算机语言.而且他跟JAVA的相似度高达80%.所以很多语法 ...

  7. JavaScript 的循环语句语法摘要

     if条件语句语法: if(condition){ statements; } 理解:圆括号里的是条件参数  ,花括号里的为执行的语句. 示例代码:if(1>2){ alert("Th ...

  8. verilog断言(SVA:systemverlog assertion)语法 ---- 转载

    转载自:http://blog.sina.com.cn/s/blog_4c270c730101f6mw.html 作者:白栎旸     断言assertion被放在verilog设计中,方便在仿真时查 ...

  9. 关于sass的介绍和基本语法

    引入 什么是sass?sass是css预处理器. 那预处理器又是什么?css本身不是一种编程语言,而预处理器是用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件. 如今主流的预处理器 ...

随机推荐

  1. AOP的底层实现:JDK动态代理与Cglib动态代理

    转载自 https://www.cnblogs.com/ltfxy/p/9872870.html SpringAOP底层的实现原理: JDK动态代理:只能对实现了接口的类产生代理.(实现接口默认JDK ...

  2. 设计模式のMediatorPattern(中介者模式)----行为模式

    一.产生背景 从生活中的例子可以看出,不论是QQ游戏还是QQ群,它们都是充当一个中间平台,QQ用户可以登录这个中间平台与其他QQ用户进行交流,如果没有这些中间平台,我们如果想与朋友进行聊天的话,可能就 ...

  3. 关于reduce的理解

    什么是reduce reduce这个词字面上来讲,大多称作“归约”,但这个词太专业了,以至于第一眼看不出来意思.我更倾向于解释为“塌缩”,这样就形象多了.对一个n维的情况进行reduce,就是将执行操 ...

  4. 关于.NET Web API InputStream接收不了数据的问题

    问题描述:1.网站向WebApi(以下简称Api) Post数据: 2.Api的过滤器先处理验证,通过HttpContext.Current.Request.InputStream获取网站Post过来 ...

  5. day08--文件操作(2)

    一.with open(): 形式:with open('文件路径(文件名)','文件操作方式','字符编码方式')as 文件别名: with open操作可以将文件的内存释放交给with 管理,wi ...

  6. c++面经积累<1>

    引用和指针 指针是一个实体,需要分配内存空间,而引用只是一个别名,不需要分配内存空间 指针可以有多级,而引用只能有一级. 指针和引用的自增运算不一样,指针是指向下一个空间,而引用是引用的变量值增加 s ...

  7. jupyter notebook 代码补全插件工具-nbextensions(并修改默认的工作目录)

    # conda install -c conda-forge jupyter_contrib_nbextensionsCollecting package metadata: doneSolving ...

  8. HTTP与HTTPS对访问速度(性能)的影响

    1 前言 HTTPS 在保护用户隐私,防止流量劫持方面发挥着非常关键的作用,但与此同时,HTTPS 也会降低用户访问速度,增加网站服务器的计算资源消耗. 本文主要介绍 https 对用户体验的影响. ...

  9. iOS开发简记(9):APPStore审核

    "觅知音"这个APP的第一个版本从提交审核到上架,历时三个星期,其中遇到一些审核上的问题,它的处理或许能帮助到遇到同样问题的小伙伴们,所以这里列举出来,这三个星期如何跟苹果的审核团 ...

  10. 升级MySQL5.7,开发不得不注意的坑

    前段时间,将线上MySQL数据库升级到了5.7.考虑到可能产生的不兼容性,在升级之前,确实也是战战兢兢,虽然测试环境,开发环境早在半年前就已提前升级. 基于前期的调研和朋友的反馈,与开发相关的主要有两 ...