预定义类型引用类型
C#支持两种预定义的引用类型:object 和string
名称 | .NET类型 | 说明 |
object | System.Object | 根类型,其他类型都是从它派生而来的(包括值类型) |
string | System.String | Unicode字符串 |
1.object类型
许多编程语言和层次结构都提供了根类型,层次结构中的其他对象都从它派生而来。C#和.Net也不例外。在C#中object类型就是最终的父类型,所有内置类型和用户定义的类型都从它派生而来。这样,object类型就可以用于两个目的。
- 可以使用object引用来绑定任何特定子类型的对象。例如使用object类型把堆栈中的值对象装箱,再移动堆中。object引用也可以用于反射,此时必须有代码来处理类型未知的对象
- object类实现了许多一般用途的基本方法,包括Equals()、GetHashCode()、GetType() 和ToString()。用户定义的类需要使用一种面向对象技术-重写,来提供其中一些方法的替代实现代码。例如,重写ToString()时,要给类提供一个方法,给出类本身的字符提示。如果类中没有提供这些方法的实现代码,编译器就会使用object类型中的实现代码,它们在类上下文中的执行不一定正确。
1.string类型
C#有string关键字,在遮罩下转换为.NET类System.String。有了它,像字符串连接和字符串复制这样的操作就很简单了。
string str1 = "Hello"; string str2 = "World"; string str3 = str1 + str2;
尽管这是一个值类型的赋值,但string是一个引用类型。string对象被分配在堆上,而不是栈上。因此,当把一个字符串变量赋予另一个字符串时,会得到对内存中同一个字符串的两个引用。但是string与引用类型的常见行为有一些区别。例如,字符串是不可改变的。修改其中一个字符串,就会创建一个全新的string对象,而另一个字符串不发生任何变化。
标签:string,C#,object,字符串,引用,类型,Net From: https://www.cnblogs.com/AntToolStuido/p/18687112