c#基础语言编程-常用函数

时间:2022-08-29 16:25:02

类型转换Convert

Convert考虑数据意义的转换。 Convert是一个加工、改造的过程。在使用Convert的转换过程中不会返回异常,当遇到类型转换的不知道的时候,用Convert找找。

Tryparse和Parse

Int.TryParse为强制转为字符串,如不能转化成功,则返回false,比如

String str= “1243sdf”;

parse中转化不成功的话,则溢出,所以tryparse比较安全。

 //把任意的字符串转换为数字类型
string msg = "12345abcd";
//int n = int.Parse(msg);
int n;
bool b = int.TryParse(msg, out n);
if (b)
{
Console.WriteLine(n);
}
else
{
Console.WriteLine("转换失败!");
}

Convert.ToInt32()是一种类容转换;但它不限于将字符串转为int类型,还可以是其它类型的参数;

比较:

    Convert.ToInt32 参数为 null 时,返回 0;

    int.Parse 参数为 null 时,抛出异常。

    Convert.ToInt32 参数为 “” 时,抛出异常;

    int.Parse 参数为 “” 时,抛出异常。

    Convert.ToInt32 可以转换的类型较多;

ToString(),Convert.ToString()由别的对象得到 string 对象,它们间的区别只表现在要转换的对象为 null 时,如果 obj 为 null,调用 obj.ToString 方法会导致 NullReferenceException 异常,调用 Convert.ToString 不会抛出异常而返回一个 null。

is 和as

这个在对基类和派生类判断是很有好处。

//person是基类 ,Ding周人是派生于person的类
Person p = new DingZhouRen(); DingZhouRen dzr = p as DingZhouRen;
if (dzr != null)
{
Console.WriteLine("ok");
}
else
{
Console.WriteLine("类型转换失败!");
}

equals 和==

两者针对类/数组时时比较在栈中地址是否一样,两者是没有区别的,但是在string类型时,对equals和==进行重载,是比较字符串内容是否一致。

如何判断两个对象是否同一个?

在object中有个判断函数,用于判断。

字符串常量

字符串常量和字符串对象是不一样的概念。

比如:

string str = “adsdf”;//str是字符串常量

string str = str1;//str是字符串对象。

对于字符串常量,就是字符串暂存池。

针对字符串常量的暂存池特性,对于相同的字符串常量,每次使用的时候并不会宠幸创建一个内存来存储,而是第一次创建的时候,讲字符串作为键,将字符串的地址作为值来存储,下次用的时候先去键值中查找,如果有则直接返回场次创建字符串地址。这个特性依赖于字符串的不可变性。

所以在程序中字符串常量要小,在程序退出后,才会释放掉内存。

由于字符串的不可变性,因为每次创建对象时消耗时间,和内存。字符串拼接时造成内存浪费和时间消耗。

解决方法就是stringbuilder。

垃圾回收

在clr机制中提供垃圾回收功能,只回收内存中的垃圾,也就是托管堆中的内存资源,不回收其他资源。值类型不需要垃圾回收,当执行完后立即就释放掉。

什么样的对象才会被回收?

没有变量引用的对象。即为null的对象。

什么时间回收?

不确定,当程序需呀重新内存的时候开始执行回收。

c#基础语言编程-常用函数的更多相关文章

  1. LINUX下C语言编程调用函数、链接头文件以及库文件

    LINUX下C语言编程经常需要链接其他函数,而其他函数一般都放在另外.c文件中,或者打包放在一个库文件里面,我需要在main函数中调用这些函数,主要有如下几种方法: 1.当需要调用函数的个数比较少时, ...

  2. 【MySQL基础总结】常用函数库

    常用函数库 数学函数 分类及含义 示例 字符串函数 分类及含义 示例 日期时间函数 分类及含义 示例 条件判断函数 分类及含义 示例 系统函数 分类及含义 加密函数 分类及定义 其他常用函数 分类及含 ...

  3. c#基础语言编程-程序集和反射

    程序集 什么是程序集? 1.程序集(assembly)是一个及一个以上托管模块,以及一些资源文件的逻辑组合. 2.程序集是组件复用,以及实施安全策略和版本策略的最小单位. 3.程序集是包含一个或者多个 ...

  4. c#基础语言编程-Path和Directory

    引言 在程序常会对文件操作,在对文件操作中需要对文件路径的进行定位,在.Net中针对寻找文件提供两个静态类以供调用,Path和Directory. Path类 来自命名空间SYstem.IO,Path ...

  5. c#基础语言编程-装箱和拆箱

    引言 为什么有装箱和拆箱,两者起到什么作用?NET的所有类型都是由基类System.Object继承过来的,包括最常用的基础类型:int, byte, short,bool等等,就是说所有的事物都是对 ...

  6. c#基础语言编程-正则表达式应用

    引言 在不同语言中虽正则表达式一样,但应用函数还是有所区别,在c#语言中使用Regex. 可以通过以下两种方式之一使用正则表达式引擎: 通过调用 Regex 类的静态方法. 方法参数包含输入字符串和正 ...

  7. c#基础语言编程-正则表达式基础

    引言 正则表达式是一种用高度抽象的字符串来描述字符串特征,进而实现对字符串的匹配.提取.替换等等.正则表达式(以下简称正则,Regex)通常不独立存在,各种编程语言和工具作为宿主语言提供对正则的支持, ...

  8. c#基础语言编程-文件流操作

    引言 在System.IO 命名空间下提供了一系列的类,我们可以通过相应的类进行文件.目录.数据流的操作. 1.File类:提供用于创建.复制.删除.移动和打开文件的静态方法.File类 2.File ...

  9. c#基础语言编程-编码

    字符编码是计算机技术的基础理论,其字符编码有ASCII码.UTF-8.还有就是GB2312,当然这是在中国常用的. 1.ASCII码 在计算机内部所有的信息都是以二进制字符进行存储.用每个二进制位中的 ...

随机推荐

  1. 腾讯云>>云通信>>TLS后台API在mac上JAVA DEMO搭建

    1.相关文档地址 2.相关demo代码 代码部分作了修改,使用了commons-io中的IOUtils.toString简化了io操作 public class Demo { public stati ...

  2. Node.js与Sails~Model和ORM的持久化

    回到目录 上一讲说了在sails里定义model及相关参数的说明,这一讲主要说一下如何将你的Model持久化到文件,关系数据库和Nosql数据库里,在持久化这点上,sails是统一管理的,它可以在/c ...

  3. 一键安装 gitlab7 on rhel6.4 并设置邮件发送

    一键安装 gitlab7 on rhel6.4 并设置邮件发送 世间本无事,庸人自扰之.书归正传,简短节说:gitlab是个好东西,可是安装手冊奇烂.尽管以前对比文档一步一步安装起来gitlab 6. ...

  4. [Usaco2008 Open]Roads Around The Farm分岔路口[水题]

    Description     约翰的N(1≤N≤1,000,000,000)只奶牛要出发去探索牧场四周的土地.她们将沿着一条路走,一直走到三岔路口(可以认为所有的路口都是这样的).这时候,这一群奶牛 ...

  5. arcpy.mapping常用四大件-Layer

    arcpy.mapping常用四大件-Layer by 李远祥 图层是地图里面非常重要的组成,几乎所有的制图显示都与图层有关.首先它是连接数据与符号渲染的重要桥梁,其次在出版地图中,图层又与图例关联在 ...

  6. javaweb中的关于编码问题总结

    1.pageEncoding="utf-8" 设置JSP编译成Servlet时使用的编码 2.Contenttype="text/html;charset=utf-8&q ...

  7. 通过shell调用rtx接口

    本脚本可获取服务器Site值和服务器ip,执行之后可通过RTX推送系统消息 脚本例子如下: #!/bin/bash function alarm(){ user="$1" cont ...

  8. python之工作举例:通过复制NC文件来造数据

    # 通过对NC文件复制来造数据 import os, shutil # 遍历的根目录 root_dir = "D:\\test_data\\DISASTER\\" # 获取NC文件 ...

  9. 《Android进阶之光》--RxJava实现RxBus

    事件总线RxBus,替代EventBus和otto 1)创建RxBus public class RxBus{ private static volatile RxBus rxBus; private ...

  10. 实践中总结出来对heapq的一点理解

    关于heapq(优先级队列算法): heapq.heapify(x):个人理解就是以线性时间(O(n)时间)将一个list转换经过堆排序之后在放入list中,而这种堆特点是根节点必须小于左右节点.曾听 ...