NET问答: String 和 string 到底有什么区别?
咨询区
Peter O.:
开门见山,参考如下例子:
string s = "Hello world!";
String s = "Hello world!";
请问这两者有什么区别,在实际使用上要注意一些什么?
回答区
Derek Park:
string
是 C# 中 System.String
的别名,从技术角度上来说,他们没有任何区别,就好像 int
和 System.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 到底有什么区别?相关推荐
- Stream跟String到底有啥区别
Stream和String到底有啥区别 比如从文件中 得到 String 和或者一个FileStream 有什么区别么....其实是一个面试题了 不会... ------最佳解决方案-------- ...
- NET问答: 如何从 string 中挖出所有的 number ?
咨询区 van: 我现在有一个需求,想从 string 中找到所有的 number 并提取出来. 举例如下: string test = "1 hello" string test ...
- Java中String、StringBuffer和StringBuilder的区别
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6581009.html 在编程中,对于字符串拼接,我们可以用String类重载的+或concat(str).S ...
- string.Empty和null三者的区别
本文来讨论"",string.Empty和null三者到底有什么区别 这是一个及其常见的问题,网上已经有关于这个问题的很多讨论.但是我觉得都是不求甚解,有一些还是在误导别人.下面我 ...
- 头条三面:toString()、String.valueOf、(String)强转,有啥区别?
欢迎关注方志朋的博客,回复"666"获面试宝典 一.前言 相信大家在日常开发中这三种方法用到的应该很多,尤其是前两种,经常在开发的时候,随心所欲,想用哪个用哪个,既然存在,那就应该 ...
- static string java_java:String类、static关键字、Arrays类、 Math类
public voidStrMethodTest(){/** public int length () :返回此字符串的长度. * public String concat (String str) ...
- java中String new和直接赋值的区别
Java中String new和直接赋值的区别 对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才 ...
- String、toString、String.valueOf()三个有啥区别?
今天在使用这个的时候发现,他们三者好像在某些场所都是可以用的,但是不免会让人想到那既然它们三者这么的相似,那么总有些什么区别吧.我也在网上找了一些资料看.自己也看了API文档,就将他们三的区别总结一下 ...
- 转换ArrayList String 到String []数组[重复]
本文翻译自:Convert ArrayList to String[] array [duplicate] This question already has an answer here: 这个问题 ...
最新文章
- 【剑指offer】14、剪绳子
- Cannot call sendRedirect() after the response has been committed解决方法
- centos 安装 py pyhs2
- linux c 编程 pdf_C/C++编程笔记:Linux 日志文件系统未解之谜,你知道吗?
- 线程池简单实现java_简单实现java线程池
- Intro OpenCL Tutorial
- 发布在线文档【软件=业务+架构+流程+组织.pptx】
- Log--日志变大原因总结
- 一定备足货!卢伟冰再曝红米骁龙855旗舰:性价比之王
- 使用 /proc 文件系统来控制系统
- 【产品必备软件合集】
- 基于FPGA的光口通信开发案例
- oracle 之除数不为0
- 银河麒麟系统PDF转Word
- 【蓝桥杯】:奇怪的分式
- 多线程如何等待所有子线程一起完成任务后再执行主线程
- 【请直接拿走~】历年IJCAI顶会论文整理/下载(2016-2021)
- linux蓝屏修复工具,Windows修复助手
- 数量遗传学 第二章 群体的遗传组成
- 为什么要使用Typescript