C#可空类型与数组

文章目录

      • 可空类型
      • NULL合并运算符(??)
      • 数组
        • 数组声明
        • 数组初始化
        • 数组赋值
        • 数组访问
        • 多维数组
        • 交错数组
        • 数组类
          • 数组类的常用属性
          • 数组类的常用方法

可空类型

  C#提供了一种特殊的数据类型,nullable类型(可空类型),可空类型可以表示其基础值类型正常范围内的值,再加上一个 null 值。声明一个nullable类型(可空类型)的语法如下:

<data_type> > ? <variable_name> = null;

namespace NullAble
{
    class Program
    {
        static void Main(string[] args)
        {
            int? a = null;
            int? b = 123;

            Console.WriteLine("a:{0}, b:{1}", a, b);
        }
    }
}

在这里插入图片描述

NULL合并运算符(??)

  Null 合并运算符用于定义可空类型和引用类型的默认值。Null 合并运算符为类型转换定义了一个预设值,以防可空类型的值为 Null。

namespace NullAble
{
    class Program
    {
        static void Main(string[] args)
        {
            int? a = null;
            int? b = 123;

            int c = a ?? 234;
            int d = b ?? 234;

            Console.WriteLine("c:{0}, d:{1}", c, d);
        }
    }
}

在这里插入图片描述

数组

  数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合。

数组声明

datatype[] arrayname

  datatype:这个数组存储数据的类型。

  arrayname:数组名。

数组初始化

  数组是一个引用类型,所以需要用new关键字来创建数组。

datatype[] arrayname = new datatype[n];

  n表示数组的空间大小。

数组赋值

通过下标给指定位置赋值

int[] arr = new int[4];

arr[0] = 1;

声明时进行赋值

int[] arr = {0, 1, 2, 3, 4};

创建并初始化一个数组

int[] arr = new int[5] {1, 2, 3, 4, 5};

省略数组大小进行赋值

nt[] arr = new int[] {1, 2, 3, 4, 5};

数组访问
namespace Array
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] arr1 = new int[3];
            arr1[0] = 1;

            int[] arr2 = { 1, 2, 3, 4, 5 };

            int[] arr3 = new int[5] { 1, 3, 5, 7, 9 };

            int[] arr4 = new int[] { 0, 2, 4, 6, 8 };

            int a = arr1[0];
            Console.WriteLine("a:{0}\n", a);

            for(int i = 0; i < 5; i++)
            {
                Console.Write("{0} ", arr2[i]);
            }
            Console.WriteLine("\n");

            foreach (int i in arr3)
            {
                Console.Write("{0} ", i);
            }
            Console.WriteLine("\n");
        }
    }
}

在这里插入图片描述

多维数组

  多维度存储相同类型数据的数组。

namespace Array
{
    class Program
    {
        static void Main(string[] args)
        {
            int[,] arr = new int[5, 2] { { 0, 1 }, { 2, 3 }, { 4, 5 }, { 6, 7 }, { 8, 9 } };
            for(int i = 0; i < 5; i++)
            {
                for(int j = 0; j < 2; j++)
                {
                    Console.Write("{0} ", arr[i, j]);
                }
                Console.WriteLine(" ");
            }
        }
    }
}

在这里插入图片描述

交错数组

  交错数组是存放数组的数组。

namespace Array
{
    class Program
    {
        static void Main(string[] args)
        {
            int[][] arr = new int[][] { new int[] { 0, 1 }, new int[] { 2, 3 }, 
                                       new int[] { 4, 5 }, new int[] { 6, 7 }, new int[] { 8, 9 } };
            for(int i = 0; i < 5; i++)
            {
                for(int j = 0; j < 2; j++)
                {
                    Console.WriteLine("{0} ", arr[i][j]);
                }
            }
        }
    }
}

在这里插入图片描述

数组类
数组类的常用属性
属性描述
IsFixedSize获取一个值,该值指定数组是否有固定大小
IsReadOnly描述获取一个值,该值指示数组是否只读
Length获取一个32位整数,返回数组长度
LongLength获取一个64位整数,返回数组长度
Rank获取数组的秩(维度)
数组类的常用方法
方法描述
Clear(Array, index, Length)根据元素的类型,设置数组从下标index开始,长度为length的元素为零、为false或者为null
Copy(Array, Array, Int32)从数组的第一个元素开始复制N个元素到另一个数组
CopyTo(Array, Int32)把源数组全部拷贝到目标数组,从目标数组的第N位开始覆盖
GetLength(dimension)/GetLongLength(dimension)获取数组指定维度的长度,返回32喂整数或64位整数
GetLowerBound返回数组指定维度的第一个元素的索引
GetUpperBound返回数组指定维度的最后一个元素的索引
Reverse(Array)逆转整个一维数组
SetValue(Object, Int32)给一维数组中指定位置的元素设置值
Sort(Array)排序
namespace MyArray
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] arr1 = new int[5] { 1, 2, 3, 4, 5 };
            int[] arr2 = new int[5] { 1, 2, 3, 4, 5 };

            Array.Clear(arr1, 1, 3);
            foreach(int i in arr1)
            {
                Console.Write("{0} ", i) ;
            }
            Console.WriteLine(" ");

            Array.Copy(arr1, arr2, 3);
            foreach (int i in arr2)
            {
                Console.Write("{0} ", i);
            }
            Console.WriteLine(" ");

            int[] arr3 = new int[10];
            arr1.CopyTo(arr3, 2);
            foreach (int i in arr3)
            {
                Console.Write("{0} ", i);
            }
            Console.WriteLine(" ");

            int[,,] arr4 = new int[1, 2, 3] { { { 1, 2, 3 }, { 4, 5, 6 } } };
            Console.WriteLine("一维:{0},二维:{1},三维:{2}", arr4.GetLength(0), arr4.GetLength(1), arr4.GetLength(2));
            Console.WriteLine("一维:{0},二维:{1},三维:{2}", arr4.GetUpperBound(0), arr4.GetUpperBound(1), arr4.GetUpperBound(2));

            Array.Reverse(arr1);
            foreach (int i in arr1)
            {
                Console.Write("{0} ", i);
            }
            Console.WriteLine(" ");

            arr1.SetValue(2, 2);
            foreach (int i in arr1)
            {
                Console.Write("{0} ", i);
            }
            Console.WriteLine(" ");

            Array.Sort(arr1);
            foreach (int i in arr1)
            {
                Console.Write("{0} ", i);
            }
            Console.WriteLine(" ");
        }
    }
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/797693.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

“钧瓷婆罗门”是许昌“钧瓷产业黑洞”已成行业共识

大禹智库 第100期&#xff08;总第431期&#xff09; 2024年7月14日 近年来&#xff0c;许昌市钧瓷产业作为我市乃至全国的文化瑰宝&#xff0c;其独特魅力与精湛技艺赢得了广泛赞誉。《许昌市钧瓷文化保护和发展条例》也将于今年10月1日正式实施&#xff0c;然而&#xff0c…

进销存管理系统设计

进销存管理系统&#xff08;Inventory Management System&#xff0c;简称IMS&#xff09;是一种帮助企业有效管理商品的入库、出库及库存情况的信息系统。良好的进销存管理系统能够提升库存周转率、减少库存成本、提高订单处理效率&#xff0c;从而增强企业的市场竞争力。以下…

33.异步FIFO IP核的配置、调用与仿真

&#xff08;1&#xff09;异步FIFO的配置过程&#xff1a; ps&#xff1a;异步fifo相比较同步fifo少一个实际深度 &#xff08;2&#xff09;异步FIFO的调用: module dcfifo (input wr_clk ,input rd_clk ,input [7:0] …

Java核心篇之JVM探秘:内存模型与管理初探

系列文章目录 第一章 Java核心篇之JVM探秘&#xff1a;内存模型与管理初探 第二章 Java核心篇之JVM探秘&#xff1a;对象创建与内存分配机制 第三章 Java核心篇之JVM探秘&#xff1a;垃圾回收算法与垃圾收集器 第四章 Java核心篇之JVM调优实战&#xff1a;Arthas工具使用及…

防火墙NAT和智能选路实验详解(华为)

目录 实验概述实验拓扑实验要求要求一要求二要求三要求四要求五 实验概述 从我上面一个博客能够了解到NAT和防火墙选路原理 ——>防火墙nat和智能选路&#xff0c;这一章我通过实验来详解防火墙关于nat和智能选路从而能熟练使用和配置防火墙&#xff0c;这里使用的是华为US…

安防监控视频平台LntonCVS视频融合共享平台智慧消防实现远程集中视频监控方案

近年来&#xff0c;电力系统内变电站着火事件频发&#xff0c;这对消防安全管理提出了严峻挑战。我国消防安全基础设施不完善、管理机制不健全、应急处置能力不足及公众消防安全意识淡薄等问题&#xff0c;严重制约了消防安全的提升。因此&#xff0c;加强变电站的消防安全管理…

【Linux 文件读写描述符重定向 Linux 一切皆文件缓冲区】

文章目录 一、文件的读写操作二、文件描述符三、文件重定向四、理解 Linux 一切皆文件五、文件缓冲区 一、文件的读写操作 文件内容属性 当文件没有被操作的时候&#xff0c;一般文件还是在磁盘当中 文件操作文件内容的操作文件属性的操作&#xff0c;文件操作有可能即改变内容…

最新版智能修图-中文luminar ai 1.55(13797) 和 neo1.20,支持m芯片和intel芯片(绝对可用)

Luminar AI for macOS 完整版本 这个程序是第一个完全由人工智能驱动的图像编辑器。有了它&#xff0c;创建引人注目的照片是有趣的&#xff0c;令人惊讶的容易。它是一个独立的照片编辑器和macOS插件。 Luminar AI for macOS 轻轻地塑造和完善一个肖像打造富有表现力的眼睛…

Arduino PID整定

Arduino PID整定 Tuning an Arduino PID Introduction to Tuning an Arduino PID 例如&#xff0c;我们可能想把一箱水加热到华氏 100 度。 我们需要能够在不同的条件下实现这一目标&#xff0c;例如房间的环境&#xff08;周围&#xff09;温度。 此外&#xff0c;我们可能会…

WPF学习(6) -- WPF命令和通知

一 、WPF命令 1.ICommand代码 创建一个文件夹和文件 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Input;namespace 学习.Command {public class MyCommand : ICommand{Acti…

无损音乐播放器推荐:Audirvana for Mac 中文激活版

udirvana 是一款高品质的音乐播放软件&#xff0c;专为Mac操作系统设计。它被设计来提供音频播放的最高标准&#xff0c;支持多种音频格式&#xff0c;包括高达32位/192kHz的高分辨率音频。Audirvana Plus 是其高级版本&#xff0c;提供了更多的功能和优化&#xff0c;例如音频…

LabVIEW远程实验数据采集系统

随着科学研究的不断发展&#xff0c;实验室对远程数据采集和监控的需求越来越高。传统的数据采集方式往往需要实验人员亲临现场&#xff0c;费时费力&#xff0c;且数据实时性较差。为了解决这些问题&#xff0c;基于LabVIEW开发了一套远程实验数据采集系统&#xff0c;实现对实…

【深度学习入门篇 ⑤ 】PyTorch网络模型创建

【&#x1f34a;易编橙&#xff1a;一个帮助编程小伙伴少走弯路的终身成长社群&#x1f34a;】 大家好&#xff0c;我是小森( &#xfe61;ˆoˆ&#xfe61; ) &#xff01; 易编橙终身成长社群创始团队嘉宾&#xff0c;橙似锦计划领衔成员、阿里云专家博主、腾讯云内容共创官…

0/1背包

0/1背包 背包问题是DP最经典的类型之一&#xff0c;而0/1背包是最经典最基础的背包问题。 一个背包体积为 v v v&#xff0c;现有 n n n种物品&#xff0c;第 i i i个物品对应体积为 c i c_i ci​&#xff0c;价值为 w i w_i wi​&#xff0c;每件物品最多可放1次&#xff0c;…

初识影刀:EXCEL根据部门筛选低值易耗品

第一次知道这个办公自动化的软件还是在招聘网站上&#xff0c;了解之后发现对于办公中重复性的工作还是挺有帮助的&#xff0c;特别是那些操作非EXCEL的重复性工作&#xff0c;当然用在EXCEL上更加方便&#xff0c;有些操作比写VBA便捷。 下面就是一个了解基本操作后&#xff…

如何追踪ping连接中的所有路由器的数量和IP

如何快速判断ping连接经过的路由器个数和IP&#xff1f; 方法一&#xff1a; ping命令会返回一个TTL&#xff0c;TTL&#xff08;Time To Live&#xff09;存活时间&#xff0c;一般初始值为64&#xff0c;每经过一个路由器就减一&#xff0c;当TTL为0时丢弃网络包&#xff0…

【深度学习】PyTorch深度学习笔记01-Overview

参考学习&#xff1a;B站视频【《PyTorch深度学习实践》完结合集】-刘二大人 ------------------------------------------------------------------------------------------------------- 1. 基于规则的深度学习 2. 经典的机器学习——手动提取一些简单的特征 3. 表示学习…

Linux问题解决

1、打开VMware Workstation&#xff0c;开启需要安装VMware Tools的虚拟机&#xff0c;在顶部选择菜单栏的虚拟机选项卡&#xff0c;点击“安装VMware Tools(T&#xff09;”。 或者有时在底部会弹出提示框安装tools&#xff0c;点击安装也可以。 2、进入ubuntu系统后&#xff…

《Linux系统编程篇》vim的使用 ——基础篇

引言 上节课我们讲了&#xff0c;如何将虚拟机的用户目录映射到自己windows的z盘&#xff0c;虽然这样之后我们可以用自己的编译器比如说Visual Studio Code&#xff0c;或者其他方式去操作里面的文件&#xff0c;但是这是可搭建的情况下&#xff0c;在一些特殊情况下&#xf…

【Linux】数据流重定向

数据流重定向&#xff08;redirect&#xff09;由字面上的意思来看&#xff0c;好像就是将【数据给它定向到其他地方去】的样子&#xff1f; 没错&#xff0c;数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据&#xff0c;给它传输到其他的地方&#xff0c;例如文件或…