C#可空类型与数组

news2024/9/24 19:13:36

文章目录

      • 可空类型
      • 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(" ");
        }
    }
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8s字段选择器

文章目录 一、概述二、基本语法三、支持的字段1、错误示例2、支持的字段列表 四、支持的操作符1、示例 五、跨多种资源类型使用字段选择器 一、概述 在Kubernetes中&#xff0c;字段选择器&#xff08;Field Selectors&#xff09;和标签选择器&#xff08;Label Selectors&am…

MySQL更新和删除(DML)

DML-修改数据 UPDATE 表名 SET 字段1 值1&#xff0c;字段2值2&#xff0c;....[WHERE 条件] 例如 1.这个就是把employee表中的这个name字段里面并且id字段为1的名字改为itheima update employee set nameitheima where id 1; 2.这个就是把employee这个表中的name字段和…

string 的完整介绍

1.string类 还记得我们数据结构学的串吗&#xff0c;现在在c中&#xff0c;我们有了c提供的标准库&#xff0c;它是一个写好的类&#xff0c;非常方便使用 1. string是表示字符串的字符串类 2. 该类的接口与常规容器的接口基本相同&#xff0c;再添加了一些专门用来操作stri…

被边缘化后:飞猪“摆烂”,庄卓然求变?

文&#xff1a;互联网江湖 作者&#xff1a;刘致呈 走向独立的飞猪&#xff0c;在最近两年是越来越放飞自我了。 从“酱香大床房”的硬蹭热度&#xff0c;到“攻城价”被京都威斯汀酒店声明“打假”&#xff1b; 从年初的大数据杀熟争议&#xff0c;到最近被12036退票点名&a…

VLM技术介绍

1、背景 视觉语言模型&#xff08;Visual Language Models&#xff09;是可以同时从图像和文本中学习以处理许多任务的模型&#xff0c;从视觉问答到图像字幕。 视觉识别&#xff08;如图像分类、物体保护和语义分割&#xff09;是计算机视觉研究中一个长期存在的难题&#xff…

据传 OpenAI秘密研发“Strawberry”项目

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

ollama + lobechat 搭建自己的多模型助手

背景 人工智能已经推出了快2年了&#xff0c;各种模型和插件&#xff0c;有渐渐变成熟的趋势&#xff0c;打造一个类似 hao123网站的人工智能模型入口&#xff0c;也变得有需求了。用户会去比较多个ai给出的答案&#xff0c;作为程序员想拥有一台自己的GPU服务器来为自己服务。…

GuLi商城-商品服务-API-品牌管理-统一异常处理

每个方法都加这段校验太麻烦了 准备做一个统一异常处理@ControllerAdvice 后台代码: package com.nanjing.gulimall.product.exception;import com.nanjing.common.exception.BizCodeEnum; import com.nanjing.common.utils.R; import lombok.extern.slf4j.Slf4j; import org…

【UE5.1】Chaos物理系统基础——06 子弹破坏石块

前言 在前面我们已经完成了场系统的制作&#xff08;【UE5.1】Chaos物理系统基础——02 场系统的应用_ue5&#xff09;以及子弹的制作&#xff08;【UE5.1 角色练习】16-枪械射击——瞄准&#xff09;&#xff0c;现在我们准备实现的效果是&#xff0c;角色发射子弹来破坏石柱。…

【算法】单调队列

一、什么是单调队列 单调队列是一种数据结构&#xff0c;其特点是队列中的元素始终保持单调递增或递减&#xff0c;主要用于维护队列中的最小值或最大值。 不同于普通队列只能从队头出队、队尾入队&#xff0c;单调队列为了维护其特征&#xff0c;还允许从队尾出队 不管怎么…

【学习笔记】4、组合逻辑电路(上)

数字电路的分类&#xff1a;组合逻辑电路&#xff0c;时序逻辑电路。本章学习组合逻辑电路。 4.1 组合逻辑电路的分析 给定的逻辑电路&#xff0c;确定其逻辑表达式&#xff0c;列出真值表&#xff0c;得到简化后的逻辑表达式&#xff0c;分析得到其功能。 3位奇校验电路 &…

OSPF.综合实验

1、首先将各个网段基于172.16.0.0 16 进行划分 1.1、划分为4个大区域 172.16.0.0 18 172.16.64.0 18 172.16.128.0 18 172.16.192.0 18 四个网段 划分R4 划分area2 划分area3 划分area1 2、进行IP配置 如图使用配置指令进行配置 ip address x.x.x.x /x 并且将缺省路由…

MQTT——Mosquitto使用(Linux订阅者+Win发布者)

前提&#xff1a;WSL&#xff08;Ubuntu22&#xff09;作为订阅者&#xff0c;本机Win10作为发布者。 1、Linux安装Mosquitto 命令行安装。 sudo apt-get install mosquitto 以上默认只安装了mosquitto的服务&#xff0c;不带测试客户端工具mosquitto_sub和mosquitto_pub。如…

持续学习中避免灾难性遗忘的Elastic Weight Consolidation Loss数学原理及代码实现

训练人工神经网络最重要的挑战之一是灾难性遗忘。神经网络的灾难性遗忘&#xff08;catastrophic forgetting&#xff09;是指在神经网络学习新任务时&#xff0c;可能会忘记之前学习的任务。这种现象特别常见于传统的反向传播算法和深度学习模型中。主要原因是网络在学习新数据…

全网最详细单细胞保姆级分析教程(二) --- 多样本整合

上一节我们研究了如何对单样本进行分析,这节我们就着重来研究一下如何对多样本整合进行研究分析! 1. 导入相关包 library(Seurat) library(tidyverse) library(patchwork)2. 数据准备 # 导入单样本文件 dir c(~/Desktop/diversity intergration/scRNA_26-0_filtered_featur…

基于TCP的在线词典系统(分阶段实现)(阻塞io和多路io复用(select)实现)

1.功能说明 一共四个功能&#xff1a; 注册 登录 查询单词 查询历史记录 单词和解释保存在文件中&#xff0c;单词和解释只占一行, 一行最多300个字节&#xff0c;单词和解释之间至少有一个空格。 2.功能演示 3、分阶段完成各个功能 3.1 完成服务器和客户端的连接 servic…

WAF基础介绍

WAF 一、WAF是什么&#xff1f;WAF能够做什么 二 waf的部署三、WAF的工作原理 一、WAF是什么&#xff1f; WAF的全称是&#xff08;Web Application Firewall&#xff09;即Web应用防火墙&#xff0c;简称WAF。 国际上公认的一种说法是&#xff1a;Web应用防火墙是通过执行一…

电表及销售统计Python应用及win程序2

接着上一篇给代码添加了表格功能&#xff0c;方便更好的处理数据。 import json import os from datetime import datetime from tkinter import * from tkinter import messagebox from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg from matplotlib.figure …

JAVA设计模式>>结构型>>适配器模式

本文介绍23种设计模式中结构型模式的适配器模式 目录 1. 适配器模式 1.1 基本介绍 1.2 工作原理 1.3 适配器模式的注意事项和细节 1.4 类适配器模式 1.4.1 类适配器模式介绍 1.4.2 应用实例 1.4.3 注意事项和细节 1.5 对象适配器模式 1.5.1 基本介绍 1.5.2 …

visual studio 2019版下载以及与UE4虚幻引擎配置(过程记录)(官网无法下载visual studio 2019安装包)

一、概述 由于需要使用到UE4虚幻引擎&#xff0c;我使用的版本是4.27版本的&#xff0c;其官方默认的visual studio版本是2019版本的&#xff0c;相应的版本对应关系可以通过下面的官方网站对应关系查询。https://docs.unrealengine.com/4.27/zh-CN/ProductionPipelines/Develo…