一尘不染

字符串是原始类型吗?

c#

我对字符串和原始类型感到好奇。文章像这样说字符串是基本类型。但是,有关MSDN的第二篇文章并未将字符串列为原始类型。

但是,当我运行第二篇文章中提供的代码时,它显示 String不是Primitive type

有人可以指导我吗?


阅读 275

收藏
2020-05-19

共1个答案

一尘不染

这两篇文章都说字符串 不是 原始类型。不是。

如果编译并运行第二篇文章中的示例代码,它将打印:

字符串不是原始类型。

我认为对此感到困惑的是,创建新字符串的语法类似于创建值类型。

在定义值类型时,所有这些都是相等的(无论如何在32位系统上)

System.Int32 a = new System.Int32(5);
System.Int32 a = 5;
int a = 5;

就像在创建引用类型字符串时一样:

System.String s = new System.String(new char[]{'h', 'e', 'l', 'l', 'o'});
System.String s = "hello";
string s = "hello";

此外,即使它们是引用类型,我们也可以按值比较字符串:

s == "hello";//true

这仍然不会使字符串成为原始类型。

问题的公认答案应该为您提供详细信息。

2020-05-19