C#中的变量祥解

一、C#数据类型:

A:值类型

值类型变量可以直接分配一个值,它是从System.ValueType派生而来,值类型直接包含数据,比如int,char,float,他们分别存储整型数据,字符,浮点数,当你申明一个值类型时,系统分别空间来存储值类型的数据,值类型包含以下类别:

C#中的变量祥解

此外,结构体,及枚举类型也都属于值类型。

B:引用类型

引用类型不包含存储在变量中的实际数据,但是它们包含对数据的引用,换句话说,它指向内存中的位置,如果内存中的数据是由一个变量改变的,其它变量也会自动反映这种变化,内置的引用类型有object,dynamic,String

1.object类型

object类型是C#通用类型系统所有数据类型的终极基类,Object是System.Object类的别名,所以Object类型可以被分配成任何其它类型(值类型、引用类型、预定义类型或用户自定义类型)的值,但是在分配之前需要进行类型转换。当一个值类型转换为引用类型时称为装箱,当一个值类型转换为Object时称为拆箱,拆装箱是非常损耗内存的,会影响程序的执行效率,所以要尽量避免执行拆装箱操作。

C#中的变量祥解
  int ii=9;
  object o = ii;
装箱操作
C#中的变量祥解
object o = 9;
int ii = (int)o;
拆箱操作

2.dynamic类型

您可以存储任何类型的数据在动态类型中,这些变量类型检查是在程序运行时发生的。动态类型和对象类型相似,但是对象类型的类型检查是在编译时发生的,而动态类型变量的类型检查是在运行时发生的。

C#中的变量祥解
 dynamic type;
 type = "11111";
dynamic

3.string类型

允许您给变量分配任何字符串值,字符串的赋值比较特别,字符串是"不可变的",对字符串的操作实质是返回新的字符串操作,

C#中的变量祥解
string str1 = "A";
string str2 = "B";
str1 += str2;
String

执行完代码后 str1 = "AB",str1指向了新的内存空间,但是之前的A并没有消失,还占据着内存等着GC对其进行回收。

 假如大量操作字符串会令程序性能下降,所以产生了StringBuider

C#中的变量祥解
StringBuilder sb = new StringBuilder("Hello");
sb.Append("Word");
sb.Append("!");
StringBuilder

只有在大量进行字符串操作时才能体现出StringBuilder的优势

用户自定义类型包括 Class,delegate,interface

 C:指针类型

C#中的指针类型和C,C++中的一样,都是指向一片内存地址,但是在C#中尽量少用指针类型。

二、C#中数据类型转换

数据类型的转换包括显示类型转换和隐式类型转换

1.隐式类型转换

隐式类型转换主要发生在C#默认数据转换是安全的情况下,比如int型赋值给double型:

int i = 3;
double d = i;

一般情况下小转大不会发生数据的丢失,所以可以用隐式类型转换.

2.显示类型转换

显示类型转换包含两种:

一种是将字符串转换为想要的数据类型,Parse

string str = "3";
i = int.Parse(str);

这种转换方式有一个弊端,那就是待转换的字符串确实可以转换为int,一旦待转换的字符串不可以转换成为对应的类型,就会报错。为了克服这个弊端,可以用TryParse

另一种就是万能转换Convert.To

C#中的变量祥解

C#中的变量祥解
string str = "3";
double s = Convert.ToDouble(str);
Convert.To

 

C#中的变量祥解

上一篇:C# Newtonsoft.Json解析json字符串处理(最清晰易懂的方法)


下一篇:Vue API 3 (模板语法 ,指令)