三种常用的字符串判空串和空格串的区别方法如下,请问哪种方法最快

C#三种字符串拼接方法的效率对比
C#字符串拼接的方法常用的有:StringBuilder、+、string.Format、List&string&。使用情况不同,效率不同。
string sql = "update tableName set int1=" + int1.ToString() + ",int2=" + int2.ToString() + ",int3=" + int3.ToString() + " where id=" + id.ToString();
编译器会优化为:
string sql = string.Concat(new string[] { "update tableName set int1=", int1.ToString(), ",int2=", int2.ToString(), ",int3=", int3.ToString(), " where id=", id.ToString() });
下面是string.Concat的实现:
public static string Concat(params string[] values)
int totalLength = 0;
if (values == null)
throw new ArgumentNullException("values");
string[] strArray = new string[values.Length];
for (int i = 0; i & values.L i++)
string str = values[i];
strArray[i] = (str == null) ? Empty :
totalLength += strArray[i].L
if (totalLength & 0)
throw new OutOfMemoryException();
return ConcatArray(strArray, totalLength);
private static string ConcatArray(string[] values, int totalLength)
string dest = FastAllocateString(totalLength);
int destPos = 0;
for (int i = 0; i & values.L i++)
FillStringChecked(dest, destPos, values[i]);
destPos += values[i].L
private static unsafe void FillStringChecked(string dest, int destPos, string src)
int length = src.L
if (length & (dest.Length - destPos))
throw new IndexOutOfRangeException();
fixed (char* chRef = &dest.m_firstChar)
fixed (char* chRef2 = &src.m_firstChar)
wstrcpy(chRef + destPos, chRef2, length);
先计算目标字符串的长度,然后申请相应的空间,最后逐一复制,时间复杂度为o(n),常数为1。固定数量的字符串连接效率最高的是+。但是字符串的连+不要拆成多条语句,比如:
string sql = "update tableName set int1=";
sql += int1.ToString();
sql += ...
这样的代码,不会被优化为string.Concat,就变成了性能杀手,因为第i个字符串需要复制n-i次,时间复杂度就成了o(n^2)。
2.StringBuilder的方式
如果字符串的数量不固定,就用StringBuilder,一般情况下它使用2n的空间来保证o(n)的整体时间复杂度,常数项接近于2。
因为这个算法的实用与高效,.net类库里面有很多动态集合都采用这种牺牲空间换取时间的方式,一般来说效果还是不错的。
3.string.Format的方式
它的底层是StringBuilder,所以其效率与StringBuiler相似。
4.List&string&它可以转换为string[]后使用string.Concat或string.Join,很多时候效率比StringBuiler更高效。List与StringBuilder采用的是同样的动态集合算法,时间复杂度也是O(n),与StringBuilder不同的是:List的n是字符串的数量,复制的是字符串的引用;StringBuilder的n是字符串的长度,复制的数据。不同的特性决定的它们各自的适应环境,当子串比较大时建议使用List&string&,因为复制引用比复制数据划算。而当子串比较小,比如平均长度小于8,特别是一个一个的字符,建议使用StringBuilder。
--------------------------------------------------------------------------------
1&固定数量的字符串连接+的效率是最高的;
2&当字符串的数量不固定,并且子串的长度小于8,用StringBuiler的效率高些。
3&当字符串的数量不固定,并且子串的长度大于8,用List&string&的效率高些。
关键词:& & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事/刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
匿名 发表于 /bkhtml/c17/71.htm 在校证明模板 /show/5704.html 同意报考证明 /show/5702.html
(0) 匿名 发表于 /bkhtml/c17/71.htm 乡镇务虚会发言材料 /show/19527.html 海燕的宣言作文 /show/19526.html
你还可能关注…
本周热门内容win8系统的Num Lock键开机无法自动启动处理办法
win8系统的Num Lock键开机无法自动启动怎么办,如果你碰到这类问题我们可以和111cn小编一起来看它的解决办法了,具体细节如下所示。1.我们先回到win8桌面了,然后同时按下电脑键盘的win+R快捷键打开电脑的运行窗口,在弹出的运行框中我们输主regedit并单击回车,然后会打开系统的&注册表编辑器&窗口了。2.在打开的注册表编辑器窗口 我们只需要定位到HKEY_USERS - DEFAULT - ControlPanel - Keyboard,之后,咱们在右侧窗口中找到InitialKeyboardIndicators选项。
3.咱们双击打开这个InitialKeyboardIndicators选项,然后在弹出来的设置窗口中,咱们将数值数据修改为2,然后点击确定保存设置,重启一下自己的win8电脑就可以正常使用了。好了这样我们重启电脑之后问题就解决了,各位有兴趣来看看吧。
更多相关文章
Win8系统开机出现蓝屏错误代码0x000008e怎么修复呢,系统蓝屏问题现在几得不多了,但是也会常出现了,今天我们一起来看看关于系统蓝屏0x000008e修复办法 一.内存好久没清理了上面很多灰或生秀了我们此时可以取下来用酒精试擦干净了,如果有两条内存条我们可以尝试检测一下看看是不是内存卡不兼容导 ...
本文章来给各位同学介绍关于将win8系统开始菜单转换成Windows 7风格 ,各位同学可进入参考.操作步骤:微软在最新操作系统Windows 8中,取消了传统的开始菜单,改成了Metro风格界面.这种变化,让部分Win8用户感到不太习惯,找不到重启.关机的按钮,也找不到计算机,控制面板等程序入口. ...
本文章是利用U盘来运行WinPE实现不需要光驱来安装win8操作系统哦,有需要了解的同学可参考此文章.请大家直接看详尽的Win8安装图文教程吧!Win8安装教程步骤分解Win8安装教程第一步:制作支持WinPE启动的U盘Win8安装教程第二步:提取Win8镜像文件中的install.wim到D盘里W ...
现在windows8系统之后可以像手机一样的直接升级到新版本的系统了,下面我来介绍我在把Win8系统更新Win8.1系统时报错0x问题的解决方案整理,希望例子对各位同学会有所帮助哦.原因分析:一般是由于第三方的应用程序引起,只要禁用必要的服务和启动项即可.解决方案:我们打开windo ...
本文章来给各位同学介绍关于Win8系统Windows update后进入modern界面卡死问题的临时解决方案,希望此教程对各位同学会有所帮助哦.故障现象:Win8系统下通过Windows update或第三方安全软件等方式修复了11月13日的补丁后,重启电脑时会停留在modern界面,无法正常进入 ...
wifi路由器有一个功能就是可以隐藏wifi了,这样别人就搜索不到隐藏ssid的wifi了,如果我们要连接在win8系统时有办法的,下面一起来看看Win8系统怎么自动连接隐藏了SSID的wifi网络吧.问题状态如果我们SSID进行了隐藏那么扫描是找不到需要手工增加了,下面来看看解决办法.解决办法.1 ...
本文章收集了Mac和Win8系统屏幕截图的组合快捷键,有需要了解的同学可进入参考.一.Mac下有自带的截图功能新Mac用户根本不必麻烦去寻找截屏软件,默认快捷键是全屏幕截图:Command+Shift+3区域截图:Command+Shift+4随后按 Space(空格) 可以选定窗口截图Mac下屏幕 ...
Win8系统怎么设置IE浏览器的默认下载工具呢?我们知道如果不设置默认下载工具ie浏览器打开的是自己的下载方式,这种单线程的下载对于小文件没有问题,但是如果是大文件经常会下载到一半断开哦,或无法下载问题,为了解决这个问题我们来给各位介绍一下IE浏览器设定迅雷为默认下载工具方法,希望例子能给大家带来帮 ...
最近安装Fedora 17,做程序开发,需要用到Code::Blocks,Code::Bl ...
Blender基金会宣布了下一个开源动画电影项目Gooseberry, 这一次不是短片,而 ...
借助新的Gallium3D状态跟踪器,Linux桌面系统现在能支持微软的Direct3D
什么是PPAPPA,表示Personal Package Archives,也就是个人软件 ...
Version 0.6.21 (maintenance)sunos: ...
(特别注明:本文内容均参考于互联网,经过个人实践而总结,若配置中遇到问题请联系我,可能写的 ...
OpenProj是一个开源的.免费的.跨平台的面向桌面系统的项目管理软件,是Microso ...
最近在自己的机器上配置Android 2.3的编译环境,由于之前安装的32位Ubuntu系 ...
在linux平台不支持lock_sga参数.如果设定lock_sga=true,启动时将报 ...
由于要用到网上的一个插件.虽然现在PBRT已经出了V2版本.仍然需要编译下PBRTV1版本 ...雅虎计算机网络系统基础笔试题
雅虎计算机网络系统基础笔试题
  笔试网上都会提前公开出来的,以下是CN人才网小编为大家精心搜集和整理的雅虎计算机网络系统基础笔试题,希望大家喜欢!
  雅虎计算机网络系统基础笔试题
  雅虎笔试题 1. (单选)
  在计算机网络中,表征数据传输可靠性的指标是&&2
  1. 传输率  2. 误码率  3. 信息容量  4. 频带利用率
  雅虎笔试题 2. (单选)
  以下关于链式存储结构的叙述中哪一条是不正确的?&&3
  1. 结点除自身信息外还包括指针域,因此存储密度小于顺序存储结构
  2. 逻辑上相邻的结点物理上不必邻接
  3. 可以通过计算直接确定第i个结点的存储地址
  4. 插入、删除运算操作方便,不必移动结点
  雅虎笔试题 3. (单选)
  以下哪一个不是栈的基本运算&&2
  1. 删除栈顶元素  2. 删除栈底元素  3. 判断栈是否为空  4. 将栈置为空栈
  雅虎笔试题 4. (单选)
  以下关于广义表的叙述中,正确的是&&1
  1. 广义表是0个或多个单元素或子表组成的有限序列
  2. 广义表至少有一个元素是子表
  3. 广义表不可以是自身的子表
  4. 广义表不能为空表
  雅虎笔试题 5. (单选)
  如果一棵二叉树结点的前序序列是A、B、C,后序序列是C、B、A,则该二叉树结点的对称序序列&&1
  1. 必为A、B、C  2. 必为A、C、B  3. 必为B、C、A  4. 不能确定
  雅虎笔试题 6. (单选)
  在虚拟页式存储管理方案中,下面哪一部分完成将页面调入内存的工作?&&1
  1. 缺页中断处理  2. 页面淘汰过程  3. 工作集模型应用  4. 紧缩技术利用
  雅虎笔试题 7. (单选)
  在DOS系统中,用于记录和管理磁盘数据区使用情况的数据结构&&3
  1. 位图表  2. 空闲块表  3. 文件分配表  4. 文件控制块
  雅虎笔试题 8. (单选)
  设有关系R(S,D,M),其函数依赖集F={S&D,D&M}。则关系R至多满足&&2
  1. 1NF  2. 2NF(消除非主属性对码的部分依赖)  3. 3NF(消除非主属性对码的传递依赖)  4. BCNF
  雅虎笔试题 9. (单选)
  在数据库逻辑设计中,当将E-R图转换为关系模式时,下面的做法哪一个是不正确的?&&4
  1. 一个实体类型转换为一个关系模式
  2. 一个联系类型转换为一个关系模式
  3. 由实体类型转换成的关系模式的主键是该实体类型的主键
  4. 由联系类型转换成的关系模式的属性是与该联系类型相关的诸实体类型的属性的全体
  雅虎笔试题 10. (单选)
  计算机网络按照所覆盖的地理范围分类,可以分广域网、局域网与&&4
  1. TCP/IP网  2. ATM网  3. ISDN  4. 城域网
  雅虎笔试题 11. (单选)
  计算机网络拓扑结构主要取决于它的&&3
  1. 资源子网  2. FDDI网  3. 通信子网  4. 路由器
  雅虎笔试题 12. (单选)
  网络协议的三个要素是语法、语义与&&2
  1. 工作原理  2. 时序  3. 进程  4. 服务原语
  雅虎笔试题 13. (单选)
  TCP/IP参考模型中,电子邮件协议SMTP依赖于传输层的&&3
  1. UDP协议  2. IP协议  3. TCP协议  4. 802.2协议
  雅虎笔试题 14. (单选)
  IEEE802.2协议中10BASE-T标准规定在使用5类双绞线时,从网卡到集线器的最大距离为&&1
  1. 100m  2. 185m  3. 300m  4. 500m
  雅虎笔试题 15. (单选)
  100Mbps Fast Ethernet与10Mbps Ethernet 工作原理的相同之处主要在&&1
  1. 介质访问控制方法  2. 物理层协议  3. 网络层  4. 发送时钟周期
  雅虎笔试题 16. (单选)
  在Client/Server计算模式中,中间件middleware的作用是隔离应用与&&1
  1. 结构化查询语言SQL  2. 应用进程  3. 网络  4. IP地址
  雅虎笔试题 17. (单选)
  当用户向ISP申请Internet帐户时,用户的E-mail帐户应包括&&4
  1. IP地址  2. WWW地址  3. 用户密码(Password)  4. 用户名(User Name)与用户密码(Password)
  雅虎笔试题 18. (单选)
  WWW的超链接中定位信息所在的位置使用的是&&2
  1. 超文本(hypertext)技术  2. 统一资源定位器(URL, Uniform Resource Locators)  3. 超媒体(hypermedia技术)  4. 超文本标注语言HTML
  雅虎笔试题 19. (单选)
  计算机网络系统与分布式系统之间的区别主要是&&2
  1. 系统物理结构  2. 系统高层软件  3. 传输介质类型  4. 服务器类型
  雅虎笔试题 20. (单选)
  帧中继系统设计的主要目标是用于互连多个&&3
  帧中继是一种用于连接计算机系统的面向分组的通信方法。它主要用在公共或专用网上的局域网互联以及广域网连接。
  帧中继的主要特点是:使用光纤作为传输介质,因此误码率极低,能实现近似无差错传输,减少了进行差错校验的开销,提高了网络的吞吐量;帧中继是一种宽带分组交换,使用复用技术时,其传输速率可高达44.6Mbps。但是,帧中继不适合于传输诸如话音、电视等实时信息,它仅限于传输数据。
  1. 广域网  2. 电话网  3. 局域网  4. 0)ATIM网
  雅虎笔试题 21. (单选)
  ATM网络采用固定长厦的信元传送数据,信元长度为&&2
  ATM是Asynchronous Transfer Mode(ATM)异步传输模式,  ATM是在LAN或WAN上传送声音、视频图像和数据的宽带技术。它是一项信元中继技术,数据分组大小固定。ATM采用面向连接的传输方式,将数据分割成固定长度的信元,通过虚连接进行交换。
  1. 1024B  2. 53B  3. 128B  4. 64B
  雅虎笔试题 22. (单选)
  TCP/IP参考模型中的主机-网络层对应于OSI RM中的&&4
  1. 网络层  2. 物理层  3. 数据链路层  4. 物理层与数据链路层
  雅虎笔试题 23. (单选)
  计算机网络最突出的优点是:&&4
  1. 计算精度高  2. 内存容量大  3. 运算速度快  4. 连网的计算机能够相互共享资源
  雅虎笔试题 24. (单选)
  计算机网络分为局域网、城域网与广域网,其划分的依据是:&&2
  1. 数据传输所使用的介质  2. 网络的作用范围  3. 网络的控制方式  4. 网络的拓扑结构
  雅虎笔试题 25. (单选)
  用二分法查找一个长度为10的、排好序的线性表,查找不成功时,最多需要比较多少次?&&3
  1. 5  2. 2  3. 4  4. 1
  雅虎笔试题 26. (单选)
  模块内聚度越高,说明模块内各成分彼此结合的程度越&&2
  1. 松散  2. 紧密  3. 无法判断  4. 相同
  雅虎笔试题 27. (单选)
  软件需求分析阶段的输出主要是&&1
  1. 需求说明书  2. 开发计划  3. 可行性报告  4. 设计说明书
  雅虎笔试题 28. (单选)
  以下选项中不是项目经理的职责的是?&&1
  1. 需求分析  2. 计划  3. 计划跟踪  4. 质量管理
  雅虎笔试题 29. (单选)
  单元测试一般在什么时候进行?&&1
  1. 编码完成后  2. 系统测试前  3. 测试用例编写完成后  4. 集成测试后
  雅虎笔试题 30. (多选)
  配置管理能起到以下哪些作用?&&1234
  1. 版本管理  2. 变更管理  3. 需求管理  4. 测试管理
  雅虎笔试题 31. (单选)
  根据线程安全的相关知识,分析以下代码,当调用test方法时i&10时是否会引起死锁?&&2
  public void test(int i)
  lock(this)
  if (i&10)
  test(i);
  1. 会锁死 2. 不会锁死
  雅虎笔试题 32. (单选)
  以下描述错误的是()&&3
  1. 在C++中支持抽象类而在C#中不支持抽象类。
  2. C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。
  3. 在C#中可使用 new 修饰符显式隐藏从基类继承的成员。
  4. 在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。
  雅虎笔试题 33. (单选)
  1. int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}};
  myArray3[2][2]的值是()。&&4
  1. 9 2. 2 3. 6 4. 越界
  雅虎笔试题 34. (单选)
  在C#中利用Socket进行网络通信编程的一般步骤是:建立Socket侦听、( )、利用Socket接收和发送数据。&&4
  1. 建立Socket连接 2. 获得端口号;3. 获得IP地址; 4. 获得主机名;
  雅虎笔试题 35. (单选)
  如果设treeView1=new TreeView(),TreeNode node=new TreeNode(&根结点& ),则treeView1.Nodes.Add(node)返回的是一个 ()类型的值。&&2
  1. TreeN 2. 3. 4. TreeV
  雅虎笔试题 36. (单选)
  声明一个委托public delegate int myCallBack(int x); 则用该委托产生的回调方法的原型应该是&&2
  1. void myCallBack(int x) 2. int receive(int num)3. string receive(int x) 4. 不确定的
  雅虎笔试题 37. (单选)
  关于ASP.NET中的代码隐藏文件的描述正确的是&&1
  1. Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为&代码隐藏&文件,如果用C#创建,该文件
  2. 项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件
  3. 项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件
  4. 以上都不正确
  雅虎笔试题 38. (单选)
  What compiler switch creates an xml file from the xml comments in the files in an
  assembly?&&2
  1. /text 2. /doc 3. /xml 4. /help
  雅虎笔试题 39. (单选)
  下面的代码实现了设计模式中的什么模式&&3
  1. Factory  2. Abstract Factory  3. Singleton  4. Builder
  雅虎笔试题 40. (单选)
  class Class1
  public static int Count = 0;
  static Class1()
  Count++;
  public Class1()
  Count++;
  Class1 o1 = new Class1();
  Class1 o2 = new Class1();
  请问,Class1.Count的值是多少?(3)
  1. 1  2. 2  3. 3  4. 4
  雅虎笔试题 41. (单选)
  abstract class BaseClass
  public virtual void MethodA()
  Console.WriteLine(&BaseClass&);
  public virtual void MethodB()
  class Class1: BaseClass
  public void MethodA()
  Console.WriteLine(&Class1&P);
  public override void MethodB()
  class Class2: Class1
  new public void MethodB()
  class MainClass
  public static void Main(string[] args)
  Class2 o = new Class2();
  o.MethodA();
  请问,此程序输出结果是:&&3
  1. BaseClass  2. BassClass Class1 3. Class1  4. Class1 BassClass
  雅虎笔试题 42. (单选)&&1
  public static void Main(string[] args)
  int i = 2000;
  object o =
  i = 2001;
  int j =(int)
  Console.WriteLine(&i={0},o={1}, j={2}&,i,o,j);
  1. i=2001,o=2000,j=2000  2. i=2001,o=2001,,j=2001
  3. i=2000,o=2001,,j=2000  4. i=2001,o=2000,j=2001
  雅虎笔试题 43. (多选)
  您要创建ASP.NET应用程序用于运行AllWin公司内部的Web站点,这个应用程序包含了50个页面。您想
  要配置这个应用程序以便当发生一个HTTP代码错误时它可以显示一个自定义的错误页面给用户。您想要花
  最小的代价完成这些目标,您应该怎么做?(多选)&&14
  1. 在这个应用程序的Global.asax文件中创建一个Application_Error过程去处理ASP.NET代码错误。
  2. 在这个应用程序的Web.config文件中创建一个applicationError节去处理ASP.NET代码错误。
  3. 在这个应用程序的Global.asax文件中创建一个CustomErrors事件去处理HTTP错误。
  4. 在这个应用程序的Web.config文件中创建一个CustomErrors节去处理HTTP错误。
  雅虎笔试题 44. (单选)
  如下程序的运行结果是:&&1
  public abstract class A
  public A()
  Console.WriteLine(&A&);
  public virtual void Fun()
  Console.WriteLine(&A.Fun()&);
  public class B: A
  public B()
  Console.WriteLine(&B&);
  public new void Fun()
  Console.WriteLine(&B.Fun()&);
  public static void Main()
  A a = new B();
  a.Fun();
  1. A B A.Fun()  2. A B B.Fun() 3. B A A.Fun()  4. B A B.Fun()
  雅虎笔试题 45. (单选)
  Which of these string definitions will prevent escaping on backslashes in C#?*&&3
  1. string s = #&n Test string&; 2. string s = &&n Test string&;
  3. string s = @&n Test string&; 4. string s = &n Test string&;
  雅虎笔试题 46. (单选)
  Which of the following operations can you NOT perform on an ADO.NET DataSet?&&4
  1. A DataSet can be synchronised with a RecordSet.
  2. A DataSet can be synchronised with the database.
  3. A DataSet can be converted to XML.
  4. You can infer the schema from a DataSet
  雅虎笔试题 47. (单选)
  In Object Oriented Programming, how would you describe encapsulation?&&4
  1. The conversion of one type of object to another.
  2. The runtime resolution of method calls.
  3. The exposition of data.
  4. The separation of interface and implementation.
  雅虎笔试题 48. (单选)
  How does assembly versioning in .NET prevent DLL Hell?&&2
  1. The runtime checks to see that only one version of an assembly is on the machine at any one time.
  2. .NET allows assemblies to specify the name AND the version of any assemblies they need to run.
  3. The compiler offers compile time checking for backward compatibility.
  4. It doesn&t.
  雅虎笔试题 49. (单选)
  三种常用的字符串判空串方法:
  1: bool isEmpty = (str.Length == 0);  2: bool isEmpty = (str == String.Empty);  3: bool isEmpty = (str == &&);
  哪种方法最快?&&1
  1. 1  2. 2  3. 3
  雅虎笔试题 50. (单选)
  public sealed class SampleSingleton1
  private int m_Counter = 0;
  private SampleSingleton1()
  Console.WriteLine(&&初始化SampleSingleton1。&&);
  public static readonly SampleSingleton1 Singleton = new SampleSingleton1();
  public void Counter()
  m_Counter ++;
  以上代码实现了设计模式中的哪种模式?&&3
  1. 原型  2. 抽象工厂  3. 单键  4. 生成器
下页更精彩:1
本文已影响6827人
相关文章推荐
你可能兴趣的文章

我要回帖

更多关于 js 空串 的文章

 

随机推荐