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()
待补:
C# 和 c++的语法不同点的更多相关文章
- PHP自动发邮件
自动发邮件 使用了这个类http://bbs.php100.com/read-htm-tid-121431.html 因他用的php版本较老,用到了函数ereg_replace() 和 ereg() ...
- Apache Nginx URL 地址 重写
URL重写这东西在工作中用了很多次了,但每次都忘记了要记得把知道的积累下来. 哎,要么认为没必要,要么就是没时间?! 一.Apache 篇 官方地址:http://man.chinaunix.net/ ...
- python语法与c++不同点
代码结构由':'号和缩进 来标示. 函数: def 定义 不定参数: *args: tarple可逐个传, 整体传, *拆包传 **kwargs dict可逐个传, 整体传, ** 拆包传, 有2 ...
- 【Java学习系列】第2课--Java语法及面向对象
本文地址 分享提纲: 1. Java程序特点 1.1 基本语法 1.2 字符串 1.3 变量 1.4 Java数组 1.5 Java枚举 1.6 Java修饰符 1.7 Java编译制定在制定目录 2 ...
- Go语言程序设计(1)--基本语法
第一个程序 package main import "fmt" func main() { fmt.Printf("Hello world") } 通过阅读这个 ...
- Java进击C#——语法之基础
本章简言 上一章讲到关于项目工程开发常用的知识点,有了前面俩章的介绍之后.本章正式开始介绍关于C#的基础语法.我们都很清楚C#也是面向对象的计算机语言.而且他跟JAVA的相似度高达80%.所以很多语法 ...
- JavaScript 的循环语句语法摘要
if条件语句语法: if(condition){ statements; } 理解:圆括号里的是条件参数 ,花括号里的为执行的语句. 示例代码:if(1>2){ alert("Th ...
- verilog断言(SVA:systemverlog assertion)语法 ---- 转载
转载自:http://blog.sina.com.cn/s/blog_4c270c730101f6mw.html 作者:白栎旸 断言assertion被放在verilog设计中,方便在仿真时查 ...
- 关于sass的介绍和基本语法
引入 什么是sass?sass是css预处理器. 那预处理器又是什么?css本身不是一种编程语言,而预处理器是用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件. 如今主流的预处理器 ...
随机推荐
- LeetCode算法题-Best Time to Buy and Sell Stock
这是悦乐书的第172次更新,第174篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第31题(顺位题号是121).假设有一个数组,其中第i个元素是第i天给定股票的价格.如果 ...
- Unity Shader 基础(3) 获取深度纹理
Unity提供了很多Image Effect效果,包含Global Fog.DOF.Boom.Blur.Edge Detection等等,这些效果里面都会使用到摄像机深度或者根据深度还原世界坐标实现各 ...
- java爬知乎问题的所有回答
突然想爬知乎问题的答案, 然后就开始研究知乎页面,刚开始是爬浏览器渲染好的页面, 解析DOM,找到特定的标签, 后来发现,每次只能得到页面加载出来的几条数据,想要更多就要下拉页面,然后浏览器自动加载几 ...
- 译文——The habits of highly successful people
1.Morning Routine (早上列行公事) Probably the most common habit ultra-successful people have is they can t ...
- C#、Java中的一些小知识点总结(持续更新......)
前言:在项目中,有时候一些小的知识,总是容易让人忽略,但是这些功能加在项目中往往十分的有用,因此笔者在这里总结项目中遇到的一些实用的小知识点,以备用,并持续更新...... 1.禁用DataGridV ...
- http: server gave HTTP response to HTTPS client & Get https://192.168.2.119/v2/: dial tcp 192.168.2.119:443: getsockopt: connection refused
http: server gave HTTP response to HTTPS client 出现这问题的原因是:Docker自从1.3.X之后docker registry交互默认使用的是HTTP ...
- servlet是线程安全的么
servlet生命周期 三个重要方法 1 init() 进行资源的加载 2 service() 处理请求,根据请求方式,调用doGet或者doPost 3 destroy() 进行资源的释放 ser ...
- 使用chrome远程调试设备及调试模拟器设备
使用chrome开发工具远程在Android上远程调试 准备工作 开始远程调试之前,需要做好如下准备: 在你电脑上安装Chrome 32 或者更新的版本 一根连接Android设备的USB线 手机系统 ...
- 【转】iOS开发笔记--识别单击还是双击
在视图上同时识别单击手势和双击手势的问题在于,当检测到一个单击操作时,无法确定是确实是一个单击操作或者只是双击操作中的第一次点击.解决这个问题的方法就是:在检测到单击时,需要等一段时间等待第二次点击, ...
- 巩固python基础
python是一门解释性的语言 变量命名规则 1.变量由字母,数字,下划线组成 2.不能用数字开头 3.禁止使用关键字 ‘and’,‘as’,‘assert’,‘break’,‘class’,‘con ...