第一句子大全,网罗天下好句子,好文章尽在本站!

C#深入浅出:拓展你的数据类型知识

时间:2024-01-31

本书从基础数据类型如整型、浮点型到更复杂的数据类型如数组、集合等进行了详细介绍,旨在帮助读者更好地理解和运用C#中的数据类型

友情提示:本文共有 3447 个字,阅读大概需要 7 分钟。

“C#深入浅出之更多数据类型”是一本深入探讨C#编程语言中各种数据类型的书籍。本书从基础数据类型如整型、浮点型到更复杂的数据类型如数组、集合等进行了详细介绍,旨在帮助读者更好地理解和运用C#中的数据类型。通过丰富的示例和实际应用场景,本书以深入浅出的方式呈现了C#中更多数据类型的知识,适合有一定编程基础的读者阅读。无论是初学者还是有一定经验的开发者,都能从中收获实用的知识和技能。

类型的划分##

一个类型,要么是值类型,要么是引用类型。区别在于拷贝方式:值类型拷贝值,引用类型拷贝引用

值类型###

值类型直接包含值。相当于每一个值类型都有自己单独的值:

int a = 10;int b = a;a和b都有着自己的值,修改a并不会影响b,反过来一样,互不影响。

即使是将实例传给Console.WriteLine()这样的方法也会产生内存拷贝。由于值内存需要创建内存拷贝,因此定义的时候不要让它们占用太多内存。

引用类型###

引用类型的变量存储对数据存储位置的引用,而不是直接存储数据。也就是说,要到对应的位置才能找到真正的数据。因此为了访问数据,“运行时”要先从变量中读取内存位置,再“跳转”到包含数据的内存位置。引用类型指向的内存区为成为堆。

正如前面所说,引用类型拷贝引用,它不包含值,每次引用变量的赋值都是引用的拷贝,并不需要拷贝数据。

值得注意的一点,引用类型只复制对数据的引用,所以两个不同的变量可引用相同的数据。在这种情况下,只要数据发生了改变,就会影响到所引用到他的变量的值,毕竟都是引用同一个数据。

可空修饰符##

我之前提到过null值,它是给引用变量表示为空的值,一般不能将它赋值给值类型。根据定义,值类型不能包含引用。但是有的时候我们的确又有这一方面的需求,所以c#教程为了声明能存储null变量,要使用可空修饰符"?"。示例:

int? cnt = null;隐式类型的局部变量##

关键字:var,用于声明隐式类型的局部变量。示例:

var text = Console.WriteLine();这么做最终的CIL代码并没有区别,但var告诉编译器根据声明时所赋的值来推断数据类型。

虽然允许用var取代像是数据类型,但是在已知数据类型的情况下还是不要这么做,明确的声明数据类型不仅能够增加可读性,还相当于亲自确认了等号右边返回的是你所需要的数据类型。

匿名类型能够在方法内部动态声明数据类型,并不需要通过显式的类定义来声明,示例:

var people1 = new { Name = "Van", Say = "啊?" };var people2 = new { Name = "Bili", Say = "乖乖站好" };System.Console.WriteLine( $"{people1.Name} {people1.Say}");System.Console.WriteLine( $"{people2.Name} {people2.Say}");元组##

有时候需要合并数据元素。元组正好可以解决这个问题,它允许在一个语句内完成所有变量的赋值。

以下是它的语法形式:

将元组赋给单独声明的变量:

(string power, string name, int weight) = ("超高校的幸运", "脖子直抖", 65);将元组赋给预声明的变量:

string power, name;int weight;(power, name, weight) = ("超高校的幸运", "脖子直抖", 65);将元组赋给隐式类型的变量:

var (power,name,weight) = ("超高校的幸运", "脖子直抖", 65);注意:此处以及下面包含的 var 绝不能如果替换成显示类型(如string或int)。因为元组宗旨是允许每一项都有不同的数据类型,所以每一项都指定同一个显示类型名称和这个宗旨冲突,即便是真的一样,编译器也不允许指定显示类型。

声明具名元组,将元组值赋给它。

(string power, string name, int weight) people = ("超高校的幸运", "脖子直抖", 65);声明包含具名元组项的元组,将其赋给隐式类型的变量。

var people = (power:"超高校的幸运", name:"脖子直抖", weight:65);将元组项未具名的元组赋给隐式类型的变量,再通过向编号属性访问单独的元素。

var people = ("超高校的幸运", "脖子直抖", 65);people.Item1;//people.Item2;若是具名元组还是可以通过项目编号属性访问单独的元素。

赋值时用下划线丢弃元组的一部分数据(弃元)。

(string power, _, int weigth) people = ("超高校的幸运", "脖子直抖", 65);数组##

数组能够在单个变量中存储同一种类型的多个数据项,并且可以通过索引来单独访问这些数据项。数组的数据线索引从0开始,最大索引值总是比数组中的数据项少1。但是现在大多数程序都使用泛型集合类型而非数组来存储数据集合。

数组声明###

数组声明,直接上代码:

string[] arr1;方括号在数据类型之后,变量名之前。

声明二维数组的方法,代码:

string[,] arr2;在用逗号进行多维数组的声明,总共维数等于逗号加一。

数组的实例化和赋值###

数组可在声明的同时初始化,例如:

string[] arr3 = {"1","1","4","5","1","4"};元素的下标对应就是对应元素的位置,依次排列。

也可以先声明数组再进行赋值,如下:

string[] arr4;arr4 = new string[]{"1","1","4","5","1","4"};但是从C#3.0开始就不必在new之后指定数组类型。编译器能根据初始化列表中的数据类型推断数组类型。如下:

arr4 = new []{"1","1","4","5","1","4"};上面使用了new关键字,它指示“运行时”为数据库类型分配内存,也就是实例化数据类型。

我们也可以给数组分配固定大小但不提供初始化,也可以指定大小并赋值,如下:

string[] arr5 = new string[6]{"1","1","4","5","1","4"};数组在没有被初始化的时候,“运行时”会给每个元素初始化为他们的默认值:

引用类型会被初始化为null。

数字类型会被初始化为0。

bool初始化为false。

char类型初始化为。

多位数组注意不要超出对应的声明范围,这里不再讨论。

数组的使用###

可以用方括号表示法(数组访问符)来访问数组中一个特定的数据项。注意下标是从0开始的,最大下标是数组内容减一。

arr1[1];//表示arr1数组中第二个元素的内容二维数组同理。

交错数组,也就是数组数组,用数组来存储数组,声明方式如下:

int[][] arr6 = { new int[]{1,1,1}; new int[]{2,2,2}; new int[]{3,3,3};}当然数组也有一些方法,下面进行举例:

arr.Length:获取数组的长度,只读。

我们在访问数组的边界元素时,一般会采取Length-1这样的方式来访问数组边界成员。

System.Array.Sort():对数组内容进行排序。

System.Array.BinarySearch(var[] arr, var searchString):返回搜索值的索引,不存在就返回-1。前提是按升序排序。

System.Array.Clear(intArray, 0, intArray.Length):清空第0到第intArray.Length个索引的元素(置零)。

System.Array.Reverse(arr):反转数组顺序。

还有众多方法,这里不一一列举,看个乐呵。

字符串作为数组使用###

我们需要注意的是,字符串是不可变的,字符串作为数组使用时,我们访问到的成员变量都是char类型的变量。为此将字符串作为数组使用时要注意不能去修改成员变量的内容。

小结##

本次博文的内容介绍了更多的数据结构,但是这也只是开始,介绍了值类型,引用类型,隐式类型,元组以及数组,这些内容都会贯彻到我们今后的项目之中,一定要打好坚实的基础,当然不是说要背下来,理解到位才是我们应该去做的。

本文如果对你有帮助,请点赞收藏《C#深入浅出:拓展你的数据类型知识》,同时在此感谢原作者。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
显示评论内容(5)
  1. tingna2024-01-31 21:02tingna[北京市网友]203.16.20.186
    刚刚开始学习C#的我觉得C#深入浅出这本书对我的学习很有帮助,特别是数据类型方面的知识。
    顶16踩0
  2. 李瑞朋友2024-01-31 20:49李瑞朋友[天津市网友]1.10.93.253
    C#深入浅出这本书内容丰富,对于数据类型的拓展讲解得非常透彻。
    顶0踩0
  3. plf2024-01-31 20:36plf[辽宁省网友]43.242.23.212
    @心内竹花开这本书对C#数据类型的讲解很详细,对我帮助很大。
    顶11踩0
  4. 心内竹花开2024-01-31 20:22心内竹花开[天津市网友]203.26.103.40
    我觉得C#深入浅出这本书很适合初学者,讲解数据类型知识很清晰易懂。
    顶0踩0
  5. 力挽天河2024-01-31 20:09力挽天河[西藏网友]115.154.189.32
    C#深入浅出是一本很不错的书,对于数据类型知识的拓展非常有帮助。
    顶5踩0
相关阅读
[小雨学编程之C#] 19.5 从流程控制语句聊聊编程思维

[小雨学编程之C#] 19.5 从流程控制语句聊聊编程思维

我们本节内容同时用if else if 和 switch来完成这个练习

2023-06-24 #经典句子

[小雨学编程之C#] 19.8 流程控制语句 for

[小雨学编程之C#] 19.8 流程控制语句 for

我们的新知识点就是循环语句for,它的语法是:for循环初值;判断条件;循环增量{每次循环需要做的事情}我们直接用一个例子说明语法,输出0~9这10个数字:

2022-12-30 #经典句子

[小雨学编程之C#] 19.7 流程控制语句 do while

[小雨学编程之C#] 19.7 流程控制语句 do while

在学习新的内容之前,我们简单回顾一下上节内容中的一个例子,模拟报价:在这个例子中,我们首先创造了一个无限循环条件whiletrue,然后在这个无限循环中

2022-12-30 #经典句子

[小雨学编程之C#] 19.2 流程控制语句 if else

[小雨学编程之C#] 19.2 流程控制语句 if else

那么内容看到这里,我们是否有种似曾相识的感觉?大家是否想起了之前我们学过的三元运算符!表达式?成立:不成立;那么,我们的这段代码可以简单修改一

2022-12-30 #经典句子

[小雨学编程之C#] 19.3 流程控制语句 if else if

[小雨学编程之C#] 19.3 流程控制语句 if else if

虽然我们生活中,这种非此即彼的判断条件比比皆是,比如一个数字要么大于0,要么小于0,一个人要么已经过生日了,要么还没过生日:但是细心的小伙伴会发

2023-06-25 #经典句子

高中语文阅读答题技巧

高中语文阅读答题技巧

一、修辞格与体会文章表达。1、读出佳句在文章中的位置及地位。2、公式:①比喻:采用了比喻的修辞手法,生动形象地描写了,表现了作者对的感情。②拟人

2022-12-01 #经典句子

[小雨学编程之C#] 19.6 流程控制语句 while

[小雨学编程之C#] 19.6 流程控制语句 while

模拟用户登陆,错误输入账户、密码满3次,程序结束

2022-12-30 #经典句子

爱看漫画书的小孩 思维会变肤浅 而且读文字书困难?

爱看漫画书的小孩 思维会变肤浅 而且读文字书困难?

前些天,我洋洋洒洒写了快5000字,聊了下孩子小学后也可以读绘本,不但要读还要多读

2013-06-13 #经典句子

第六篇:C语言中结构体与文件操作相关知识点梳理

第六篇:C语言中结构体与文件操作相关知识点梳理

前面总结过,C语言中的基本数据类型有四种,分别是整型、浮点型和字符型;后面又讲到可以保存字符串的字符数组。但这远远不够实际应用的需要。问题一:基

2019-09-09 #经典句子