【C#本质论 三】更多数据类型

简介: 【C#本质论 三】更多数据类型

上篇博客介绍了基本的数值类型,以及字符、字符串的使用方式,本篇博客详细介绍下更多的常用数据类型:元组、数组,并且介绍下可空修饰符以及值类型和引用类型的区别

元组

元组允许在一个语句中完成所有变量的赋值并且允许每一项都有不同的数据类型,在我看来元组更像是一个阉割版本的类,因为我们这么做的时候通过是因为这些变量存在某些业务关系,但是它又不需要像类那样重,需要有很多方法什么的

元组的使用方式多种多样,既支持显示、又支持隐式变量声明,在5中还可以将元组数据赋值给一个元组类型,不仅如此,元组不单支持具名访问还支持8中不具名的使用item顺序访问,以及9中的弃元操作。

数组

数组再熟悉不过了,不管是C,C#,Java基本啥都有,那我就聊点儿不一样的。在赋值的时候,要么开辟内存空间,要么将地址的引用赋给数组变量。

需要注意的是,如果指定了大小,并且包含了元素,那么元素个数一定要和大小一致。若只是指定了大小但未分配值,则每个元素使用默认值。引用类型,为null; 数值类型为0; bool类型为false; char类型为\0

多维数组和交错数组

多维数组是一个n*m的矩形,每一维的大小必须一致。而交错数组表示在一个数组里添加了一堆数组:

private static void Main(string[] args)
        {
            int[][] aa = { new int[] { 1, 0}, new int[] { 0, 2, 0 }, new int[] { 1, 2, 1,5 } };
            System.Console.WriteLine(aa[1][0]);  //返回true
            System.Console.ReadKey();
        }

每一维的大小可以不一致。

数组方法的使用

包括一些常用方法:Sort用于排序,BinarySearch用于先排序后获取指定元素的索引,目标元素不存在返回索引,值得特别注意的是:

  • Length方法:如果是多维数组会返回多维数组的总数,而如果是交错数组,会返回交错数组里的数组个数
  • Clear方法:不删除数组元素,只是将数组里的元素没一个都设置为其默认值
  • Clone方法:返回一个数组的拷贝,该拷贝是一个堆数据的拷贝,修改新数组不会影响原始数组
  • Rank方法:获取整个数组的维数,也就是N*M里的N.

除了以上常用方法,还可以使用ToCharArray将字符串转为字符数组。再使用Reverse方法反转该字符串数组

C#冷知识

1,一个类型要么是值类型、要么是引用类型。值类型的数据总是拷贝值,而引用类型的数据总是拷贝引用。所以比较推荐的用法是,值类型内存占用最好不要超过16字节

2,引用类型的实例指向堆,运行时要先从变量读到内存位置,然后再跳转到堆里数据存储的实际位置

3,一般不能将null赋给值类型,但是在值本来缺失的时候,由不希望编译报错,可以使用可空修饰符:?

private static void Main()
        {
            int? count = null;
            Console.WriteLine(count);
        }

一个好处是,在进行数据库编程的时候不用担心取到null值给值类型会报错了,因为数据库里没有数据的时候就是null,这时候用可空修饰符就没有关系。int的默认值0在表里可是也是有意义的,所以说一定要给值类型一个缺失而不是指定某个值。

4,可以使用var来隐式声明变量,编译器会依据编译时赋的值来确定类型。但是如果不是显而易见的的类型,尽量不要使用var,而是使用本来类型来声明变量

C#新知识

1,可以使用default关键字来获取任何数据类型的默认值:

int count =default(int)   //0

2,从C#3.0开始,创建数组时不需要显示指定数据类型,也可以依据元素来确认:

private static void Main()
        {
            var people = new[] { "hhh", "ttt" };
        }


相关文章
|
9月前
|
C#
C#学习相关系列之数据类型类的三大特性(二)
C#学习相关系列之数据类型类的三大特性(二)
|
9月前
|
存储 C#
C#数据类型之结构体介绍
C#数据类型之结构体介绍
|
9月前
|
C#
C#数据类型之枚举类型
C#数据类型之枚举类型
247 0
|
9月前
|
存储 编译器 数据处理
C#基础入门之数据类型
C#基础入门之数据类型
|
9月前
|
存储 C# 图形学
【Unity 3D】C#数据类型和变量、命名规范的讲解(附源码)
【Unity 3D】C#数据类型和变量、命名规范的讲解(附源码)
224 1
|
5月前
|
存储 C# 索引
C# 一分钟浅谈:变量与数据类型简介
【9月更文挑战第1天】在 C# 编程中,了解变量与数据类型至关重要。本文详细介绍了 C# 中的值类型(如整数、浮点数、布尔值等)和引用类型(如类、接口、数组、字符串)。通过示例代码展示了变量的声明与使用方法,并针对数据类型转换错误、变量未初始化及数值溢出等常见问题提供了解决方案。正确选择数据类型不仅能提升程序性能,还可避免潜在错误,有助于编写高质量代码。
146 47
|
3月前
|
开发框架 .NET API
以C#一分钟浅谈:GraphQL 数据类型与查询
本文从C#开发者的角度介绍了GraphQL的基本概念、核心组件及其实现方法。GraphQL由Facebook开发,允许客户端精确请求所需数据,提高应用性能。文章详细讲解了如何在C#中使用`GraphQL.NET`库创建Schema、配置ASP.NET Core,并讨论了GraphQL的数据类型及常见问题与解决方案。通过本文,C#开发者可以更好地理解并应用GraphQL,构建高效、灵活的API。
137 64
|
2月前
|
开发框架 .NET 测试技术
C# 一分钟浅谈:GraphQL 数据类型与查询
本文介绍了GraphQL的基本概念、数据类型及查询方法,重点从C#角度探讨了GraphQL的应用。通过Hot Chocolate库的实例,展示了如何在ASP.NET Core中实现GraphQL API,包括安装、定义Schema、配置及运行项目。文中还讨论了常见问题与解决方案,旨在帮助开发者更好地理解和使用GraphQL。
57 2
|
6月前
|
Java C#
C# 和 java 基本数据类型
C# 和 java 基本数据类型
38 0
|
8月前
|
存储 C# 开发者
C# 编程基础:注释、变量、常量、数据类型和自定义类型
C# 编程基础:注释、变量、常量、数据类型和自定义类型