当前位置: 首页 > news >正文

C# 和 c++的语法不同点

 

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()

 

待补:

转载于:https://www.cnblogs.com/hjbf/p/10668118.html

相关文章:

  • 我的新浪微博
  • 晴天霹雳。。傲盾把我的Linux格成了03系统了?之二
  • Log4j2入门
  • Notepad++插件安装和使用和打开大文件
  • 在SharePoint Server 2010中更改“我的网站”
  • 基数排序的理解和实现(Java)
  • P1962 斐波那契数列-题解(矩阵乘法扩展)
  • DotNetNuke模块开发(一)
  • LOJ104 普通平衡树
  • Airport Simulation (数据结构与算法 – 队列 / Queue 的应用)
  • 掌握 Dojo 工具包
  • js中用变量作为$()内id的值、动态获取id,及获取其下面的class元素
  • 读Google三大论文后感
  • 数据展现DataList控件(26)
  • [转帖] 使用 InstallShield 安装和卸载SQL Server 数据库
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 「译」Node.js Streams 基础
  • Angular2开发踩坑系列-生产环境编译
  • Centos6.8 使用rpm安装mysql5.7
  • echarts的各种常用效果展示
  • Flex布局到底解决了什么问题
  • Hexo+码云+git快速搭建免费的静态Blog
  • Java新版本的开发已正式进入轨道,版本号18.3
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • python 装饰器(一)
  • Redis在Web项目中的应用与实践
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • vue 配置sass、scss全局变量
  • Vue全家桶实现一个Web App
  • 消息队列系列二(IOT中消息队列的应用)
  • 学习HTTP相关知识笔记
  • 终端用户监控:真实用户监控还是模拟监控?
  • 最简单的无缝轮播
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​Java并发新构件之Exchanger
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (Python) SOAP Web Service (HTTP POST)
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (一)u-boot-nand.bin的下载
  • (转) ns2/nam与nam实现相关的文件
  • (转)四层和七层负载均衡的区别
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • .NET 指南:抽象化实现的基类
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .net中调用windows performance记录性能信息
  • /bin/bash^M: bad interpreter: No such file or directory
  • @NestedConfigurationProperty 注解用法
  • @Transaction注解失效的几种场景(附有示例代码)