咨询区

  • Peter O.

开门见山,参考如下例子:


string s = "Hello world!";
String s = "Hello world!";

请问这两者有什么区别,在实际使用上要注意一些什么?

回答区

  • Derek Park

string  是 C# 中 System.String 的别名,从技术角度上来说,他们没有任何区别,就好像 intSystem.Int32 一样。

至于使用上要注意什么?我通常推荐使用编译器内置的关键词 string,比如说:


string place = "world";

同样的,如果你想使用 string 下的某些方法,我推荐使用类方式 String.Format ,比如:


string greet = String.Format("Hello {0}!", place);

点评区

其实要想看两者的区别,可以先看看他们的 IL 是否一致?如果一致,那就看看汇编是否一致?沿着这个思路可以写个例子:

static void Main(string[] args){string s = "Hello world!";String s2 = "Hello world!";}

然后用 ILSpy 输出 IL 指令。


.method private hidebysig static void Main (string[] args) cil managed
{// Method begins at RVA 0x2050// Code size 14 (0xe).maxstack 1.entrypoint.locals init ([0] string s,[1] string s2)IL_0000: nopIL_0001: ldstr "Hello world!"IL_0006: stloc.0IL_0007: ldstr "Hello world!"IL_000c: stloc.1IL_000d: ret
} // end of method Program::Main

从上面可以看出,都是用 ldstr 指令从元数据中提取新对象的引用,参考官方解释:

那怎么查看元数据中的 Hello world 字面量呢?可以用 PPEE 工具。

原文链接:https://stackoverflow.com/questions/7074/what-is-the-difference-between-string-and-string-in-c

NET问答: String 和 string 到底有什么区别?相关推荐

  1. Stream跟String到底有啥区别

    Stream和String到底有啥区别 比如从文件中 得到 String 和或者一个FileStream 有什么区别么....其实是一个面试题了  不会... ------最佳解决方案-------- ...

  2. NET问答: 如何从 string 中挖出所有的 number ?

    咨询区 van: 我现在有一个需求,想从 string 中找到所有的 number 并提取出来. 举例如下: string test = "1 hello" string test ...

  3. Java中String、StringBuffer和StringBuilder的区别

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6581009.html  在编程中,对于字符串拼接,我们可以用String类重载的+或concat(str).S ...

  4. string.Empty和null三者的区别

    本文来讨论"",string.Empty和null三者到底有什么区别 这是一个及其常见的问题,网上已经有关于这个问题的很多讨论.但是我觉得都是不求甚解,有一些还是在误导别人.下面我 ...

  5. 头条三面:toString()、String.valueOf、(String)强转,有啥区别?

    欢迎关注方志朋的博客,回复"666"获面试宝典 一.前言 相信大家在日常开发中这三种方法用到的应该很多,尤其是前两种,经常在开发的时候,随心所欲,想用哪个用哪个,既然存在,那就应该 ...

  6. static string java_java:String类、static关键字、Arrays类、 Math类

    public voidStrMethodTest(){/** public int length () :返回此字符串的长度. * public String concat (String str) ...

  7. java中String new和直接赋值的区别

        Java中String new和直接赋值的区别     对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才 ...

  8. String、toString、String.valueOf()三个有啥区别?

    今天在使用这个的时候发现,他们三者好像在某些场所都是可以用的,但是不免会让人想到那既然它们三者这么的相似,那么总有些什么区别吧.我也在网上找了一些资料看.自己也看了API文档,就将他们三的区别总结一下 ...

  9. 转换ArrayList String 到String []数组[重复]

    本文翻译自:Convert ArrayList to String[] array [duplicate] This question already has an answer here: 这个问题 ...

最新文章

  1. 【剑指offer】14、剪绳子
  2. Cannot call sendRedirect() after the response has been committed解决方法
  3. centos 安装 py pyhs2
  4. linux c 编程 pdf_C/C++编程笔记:Linux 日志文件系统未解之谜,你知道吗?
  5. 线程池简单实现java_简单实现java线程池
  6. Intro OpenCL Tutorial
  7. 发布在线文档【软件=业务+架构+流程+组织.pptx】
  8. Log--日志变大原因总结
  9. 一定备足货!卢伟冰再曝红米骁龙855旗舰:性价比之王
  10. 使用 /proc 文件系统来控制系统
  11. 【产品必备软件合集】
  12. 基于FPGA的光口通信开发案例
  13. oracle 之除数不为0
  14. 银河麒麟系统PDF转Word
  15. 【蓝桥杯】:奇怪的分式
  16. 多线程如何等待所有子线程一起完成任务后再执行主线程
  17. 【请直接拿走~】历年IJCAI顶会论文整理/下载(2016-2021)
  18. linux蓝屏修复工具,Windows修复助手
  19. 数量遗传学 第二章 群体的遗传组成
  20. 为什么要使用Typescript

热门文章

  1. 用html编写ASCII表,HTML ASCII
  2. spring-boot基础概念与简单应用
  3. 【Luogu3931】SAC E#1 - 一道难题 Tree
  4. Requests获取连接的IP地址
  5. python:软件目录结构规范
  6. EntityFramework6.X 之 Fulent
  7. Java网络编程二:Socket详解
  8. R语言-异常数据处理2
  9. Symbian开发平台的搭建之VC++6.0Carbide C++ 2.0
  10. c#3.0关于JSON简单操作的实用帮助类(泛型实现)