C#可空类型与数组

可空类型

  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(" ");
        }
    }
}

在这里插入图片描述

  • 22
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜君竹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值