- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
众所周知,字符串是隐式实例化的,这意味着我们不必使用 new
来获取对对象的引用。
正因为如此,我一直相信框架会处理这个问题,因此如果我这样做,我会得到相同的 IL:
String first = new String(new char[] {'a'});
string second = "a";
但是第一行似乎是使用 newobj instance void [mscorlib]System.String::.ctor(char[])
完成的 和第二个 ldstr "a"
。
因此,为了获得字符串引用,ldstr
是否会在内部调用 newobj
?我在哪里可以看到支持它的规范/详细信息?
最佳答案
ldstr
为您提供对文字字符串的引用 per the documentation (记住文字字符串默认是驻留的,所以它们只创建一次)。第一条语句按预期使用 newobj
指令创建 string
的常规实例。
关于c# - ldstr 是否在内部实现了 newobj?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10111194/
所以 String 不是原始类型,而是一个类,类的对象通常必须以 Obj x = new Obj (); 的形式创建。但是,可以通过 String x = "..."; 创建字符串,这是首选方式,而不
众所周知,字符串是隐式实例化的,这意味着我们不必使用 new 来获取对对象的引用。 正因为如此,我一直相信框架会处理这个问题,因此如果我这样做,我会得到相同的 IL: String first = n
我正在深入研究 C#,并尝试使用可为 null 的值类型。只是出于实验目的,我写了一段代码: private static void HowNullableWorks() {
在 MonoTouch 下,以下代码行编译,但生成 InvalidProgramException: var bytes = new byte[,]{}; System.InvalidProgramE
当我执行波纹管时,出现 Unpickling 错误 rdd = sc.parallelize([('HOMICIDE', {'2017': 1}), ('DECEPTIVE PRACTICE', {'
我将 python 2.7 与 spark 1.5.1 一起使用,我得到了这个: df = sqlContext.read.parquet(".....").cache() df = df.filte
我有一个将构造函数包装在动态工厂方法中的方法: static Func ToFactoryMethod(this ConstructorInfo ctor) where TResult : c
我正在使用一个自定义 pickler,它根据 Shane Hathaway 的代码将任何不可 pickle 的对象(例如套接字或文件)替换为它们的字符串表示形式: Python: Pickling a
我遇到了一个非常奇怪的问题,使用spicy.spacial距离矩阵计算工作正常,但使用距离矩阵的自定义函数会导致Spark错误。 我的数据如下所示: 33.848366,-84.3733852,A,1
这里是一些用 C# 编写的测试程序: using System; struct Foo { int x; public Foo(int x) { this.x = x;
我是一名优秀的程序员,十分优秀!