电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

编程中string是不是引用类型?


发布日期:2018/10/1
 

在msdn上

值类型主要由两类组成

结构

枚举

结构分为以下几类

Numeric(数值)类型

整型

浮点型

decimal

bool

用户定义的结构

也就是string属于引用类型但是实际使用中

class Program

{

static void StringCon(string str)

{

str=New String;

}

public static void Main(string[] args)

{

ConsoleWriteLine(Hello World!);

// TODO: Implement Functionality Here

string oldstr =str;

ConsoleWriteLine(before:{}oldstr );

StringCon(oldstr );

ConsoleWriteLine(after:{}oldstr );

ConsoleWrite(Press any key to continue );

ConsoleReadKey(true);

}

}

输出beforestr

afterstr

也就是没有引用类型的应该有的表现这是为什么了?

实际上net设置string有个事实就是string一旦建立他的值是不可改变的而当将一个已经存在的字符串赋予新值的时候实际上在次过程中分配了一个新字符串(原有的字符串将被GC回收)

static void StringCon(string str)// 相当于string str =oldstr

// str是oldstr的一个副本他们只是指向相同的地址

{

str=New String;// 相当于string str =new string(New String;)

// str现在的地址改变了而oldstr还是原先的地址

}

所有string在当作参数传递是有值类型的表现但是实际还是引用类型

上一篇:对象设计中创建VS使用

下一篇:字符串拆分split