版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://cloud.tencent.com/developer/article/1347579
在 C# 中,变量分为以下几种类型:
和Javascript一样,值类型保存在栈中,引用类型值存储在堆中,值的引用保存在栈中。数据操作运算和js一样,值类型复制copy值本身,引用类型复制copy引用指针。有一个区别就是在C#中String类型是引用类型。
值类型变量可以直接分配给一个值。它们是从类 System.ValueType 中派生的,值存储在栈中。
值类型直接包含数据。比如 int、char、float,它们分别存储数字、字母、浮点数。
引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。
引用位置保存在栈中,数据存储在堆中
换句话说,它们指的是一个内存位置。使用多个变量(栈引用)时,引用类型可以指向一个内存位置(堆)。如果内存位置的数据是由一个变量改变的,其他变量(栈引用)会自动反映这种值的变化。内置的 引用类型有:object、dynamic 和 string。
字符串(String)类型的值可以通过两种形式进行分配:引号和 @引号。
C# string 字符串的前面可以加 @(称作”逐字字符串”)将转义字符(\)当作普通字符对待,比如:
string str = @"C:\Windows";
等价于:
string str = "C:\\Windows";
string s1 = "kenny";
string s2 = "kenny";
Console.WriteLine(s1 == s2); //True
Console.WriteLine((Object)s1 == (Object)s2); //True
//公司.Neter说字符串会做缓存处理,其他引用类型不会相等,证实确实这样
指针类型变量存储另一种类型的内存地址。C# 中的指针与 C 或 C++ 中的指针有相同的功能。
声明指针类型的语法:
type* identifier;
namespace TypeConversionApplication
{
class ExplicitConversion
{
static void Main(string[] args)
{
double d = 5673.74;
int i;
// 强制转换 double 为 int
i = (int)d;
Console.WriteLine(i);
Console.ReadKey();
}
}
}