当前位置: 首页 > news >正文

C#数组中的Rank,GetUpperBound(), GetLength()

Rank-数组的秩,一维数组的Rank=1;二维数组的Rank=2;

GetUpperBound()--获取每一维的索引的上限,

比如int[4,5], 那么GetUpperBound(0) = 3; GetUpperBound(1) = 4 ;

所以

对于二维数组来说

GetUpperBound(0)+1=行数;

GetUpperBound(1)+1=列数

然后就是

GetLength(0) = 行数,

GetLength(1) = 列数

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;//数组的合并和拆分
namespace ArrayMergeSplit
{internal class Program{static void Main(string[] args){//将两个一维数组合并成维一个一维数组int[] arr1 = new int[] { 1, 2, 3, 4, 5 };int[] arr2 = new int[] { 6, 7, 8, 9, 10 };Console.WriteLine("原始的两个数组:");Console.WriteLine("数组arr1的元素为:");foreach (int n1 in arr1)Console.Write(n1 + " ");Console.WriteLine();Console.WriteLine("数组arr2的元素为:");foreach (int n2 in arr2)Console.Write(n2 + " ");Console.WriteLine();int[] arr3 = new int[arr1.Length + arr2.Length];for (int i = 0; i < arr3.Length; i++){if (i < arr1.Length)arr3[i] = arr1[i];else if (i >= arr1.Length)arr3[i] = arr2[i - arr1.Length];}Console.WriteLine("合并后的数组为:");foreach (int n3 in arr3)Console.Write(n3 + " ");Console.WriteLine();//将两个一维数组合并成一个二位数组int k = arr1.Length;int m = arr2.Length;int row = 2;int col = 0;if (k > m){col = k;}elsecol = m;int[,] arr4 = new int[row, col];for (int x = 0; x < arr4.GetLength(0); x++){for (int y = 0; y < arr4.GetLength(1); y++){if (y < arr1.Length && x == 0)arr4[x, y] = arr1[y];else if (y < arr2.Length && x == 1)arr4[x, y] = arr2[y];}}Console.WriteLine("合成的二维数组是:");for (int ii = 0; ii < arr4.GetLength(0); ii++){for (int jj = 0; jj < arr4.GetLength(1); jj++){Console.Write(arr4[ii, jj] + " ");}Console.WriteLine();}//另外一种实现方法int[,] arr5 = new int[row, col];for (int i = 0; i < arr5.Rank; i++){//Array.Rank属性返回数组的维数,也就是行数switch (i){case 0:{for (int j = 0; j < arr1.Length; j++)arr5[i, j] = arr1[j];break;}case 1:{for (int j = 0; j < arr2.Length; j++)arr5[i, j] = arr2[j];break;}}}Console.WriteLine("合并后的二维数组为:");for (int i = 0; i < arr5.Rank; i++){//Rank获取数组的维数//arr5.GetUpperBound(arr5.Rank-1)获取数组指定维度的上限for (int j = 0; j <= arr5.GetUpperBound(arr5.Rank-1); j++){Console.Write(arr5[i, j] + " ");}Console.WriteLine();}//GetUpperBound() 方法在 C# 中用于获取数组维度的上限//对于一维数组,它基本上返回数组的上限索引,即数组的长度减去1。//对于多维数组,它返回指定维度的上限。Console.WriteLine("数组的维数:");Console.WriteLine(arr5.Rank);//结果是2Console.WriteLine("GetUpperBound()的用法:");//Console.WriteLine(arr5.GetUpperBound(arr5.Rank));//IndexOutOfRange异常//用GetUpperBond()获去一维数组上限索引int[] arr11 = new int[] { 1, 2, 3, 4, 5 };int[] arr22 = new int[] { 6, 7, 8, 9, 10 };Console.WriteLine("一维数组的秩维:{0}", arr1.Rank);Console.WriteLine("获取一维数组的上限:");Console.WriteLine(arr11.GetUpperBound(0));Console.WriteLine(arr22.GetUpperBound(0)); //GetUpperBound()获得多维数组指定维度的上限Console.WriteLine("获取二维数组arr5的GetUpperBound()值");for(int i=arr5.Rank-1; i>=0; i--){Console.WriteLine("arr5.GetUpperBound({0})= {1}", i, arr5.GetUpperBound(i));}Console.WriteLine();Console.WriteLine("数组arr5的元素为:");for(int i =0; i<arr5.GetLength(0); i++){for(int j=0; j<arr5.GetLength(1); j++){Console.Write(arr5[i, j]+ " ");}Console.WriteLine() ;}Console.WriteLine(arr5.GetUpperBound(0));//arr5[2,5],所以此为1Console.WriteLine(arr5.GetUpperBound(1));//arr5[2,5],所以此为4Console.WriteLine();Console.WriteLine();Console.WriteLine();//测试2int[,] multiArray = new int[3, 5];Console.WriteLine("二维数组的秩是多少?" + multiArray.Rank);int dim0UpperBound = multiArray.GetUpperBound(0); // 返回 2int dim1UpperBound = multiArray.GetUpperBound(1); // 返回 4//GetUpperBound()获得每一维索引的上限Console.WriteLine(dim0UpperBound);Console.WriteLine(dim1UpperBound);//所以对于二维数组来说,arr5.GetUpperBound(0)就是第一维索引的上限,也就是行数-1//arr5.GetUpperBound(1)就是第二维的索引的上限,也就是列数-1;}}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 云计算和传统IT相比,有哪些优势?
  • 爬虫练习(js逆向解密)
  • 操作系统体系结构分类
  • Python爬虫:通过js逆向获取某瓜视频的下载链接
  • 计算机岗位(面试)
  • Leetcode Day21组合总和
  • 设计模式之-开闭原则
  • ecmascript和javascript的区别详细讲解
  • 云原生架构概念
  • 发那科A06B-6270-H045#H600 主轴伺服放大器
  • 1. GIS开发工程师岗位职责、技术要求和常见面试题
  • 数据访问:JPA关联MyBatis
  • 【ShuQiHere】深入理解递归:从基础概念到实际应用
  • mysql如何使用explain来分析语句使用到的索引效果
  • JAVA毕业设计167—基于Java+Springboot+vue3+小程序的物业管理系统小程序(源代码+数据库+万字论文+文献综述)
  • C++类中的特殊成员函数
  • DataBase in Android
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • JavaScript函数式编程(一)
  • Java多线程(4):使用线程池执行定时任务
  • Linux快速复制或删除大量小文件
  • Redis 中的布隆过滤器
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 聚类分析——Kmeans
  • 如何合理的规划jvm性能调优
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 物联网链路协议
  • 在electron中实现跨域请求,无需更改服务器端设置
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • # 数据结构
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • ######## golang各章节终篇索引 ########
  • #etcd#安装时出错
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (理论篇)httpmoudle和httphandler一览
  • (六)DockerCompose安装与配置
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (详细文档!)javaswing图书管理系统+mysql数据库
  • (转载)从 Java 代码到 Java 堆
  • **PHP分步表单提交思路(分页表单提交)
  • *Django中的Ajax 纯js的书写样式1
  • .NET Core 发展历程和版本迭代
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET MAUI Sqlite程序应用-数据库配置(一)
  • @staticmethod和@classmethod的作用与区别
  • @Transactional事务注解内含乾坤?
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [20171102]视图v$session中process字段含义
  • [Android]通过PhoneLookup读取所有电话号码
  • [Android]一个简单使用Handler做Timer的例子
  • [Angular] 笔记 16:模板驱动表单 - 选择框与选项
  • [BZOJ]4817: [Sdoi2017]树点涂色
  • [bzoj4010][HNOI2015]菜肴制作_贪心_拓扑排序