C#复习之索引器

news2024/9/27 6:47:32

知识点一:索引器基本概念

基本概念:

让对象可以像数组一样通过索引访问其中元素,使程序看起来更直观,更容易编写

知识点二:索引器语法

//value代表传入的值

知识点三:索引器的使用

知识点四:索引器中可以写逻辑 

知识点五:索引器可以重载

重载的概念是---函数名相同  参数类型、数量、顺序不同

可以把this看成函数名

 

总结:

索引器对于我们来说的主要作用

可以让我们以中括号的形式范围自定义类中的元素  规则自己定 访问时和数组一样

比较适用于 在类中有数组变量时使用 可以方便的访问和进行逻辑处理

固定写法

访问修饰符  返回值  this[参数列表]

get和set语句块

可以重载

注意:结构体里面也是支持索引器

练习题:自定义一个整形数组类,该类中有一个整形数组变量,为它封装增删查改的方法

using System;
using System.CodeDom;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 索引器
{
    internal class Program
    {
        static void Main(string[] args)
        {
           IntArray array = new IntArray();
            array.Add(100);
            array.Add(200);
            array.Add(300);
            array.Add(400);
            array.Add(500);
            Console.WriteLine(array[0]);
            array.RemoveAt(0);
            Console.WriteLine(array[1]);
            array.Remove(200);
            Console.WriteLine(array[1]);
            Console.WriteLine(array[6]);
            Console.WriteLine(array.Length);
        }
    }

    class IntArray
    {
        private int[] array;

        private int capacity;//房间容量
        private int length;//长度(当前放了几个房间)

        public IntArray()
        {
            capacity = 5;
            length = 0;
            array = new int[capacity];
        }
        //增
        public void Add(int value)
        {
            //如果要增加就涉及扩容
            //扩容就涉及"搬家"
            if (length<capacity)
            {
                array[length] = value;
                ++length;
            }
            //扩容
            else
            {
                capacity *= 2;
                //新房子
                int[] tempArray =new int[capacity];
                //老东西放进新房子里
                for (int i = 0; i < array.Length; i++)
                {
                    tempArray[i] = array[i];
                }
                //老的房子地址 指向新房子的地址
                array = tempArray;

                //往后面放
                array[length] = value;
                ++length;
            }
        }
        //删
        public void Remove(int value)
        {
            //找到传入值在哪个位置
            for (int i = 0; i < length; i++)
            {
                if (array[i] == value)
                {
                    RemoveAt(i);
                    return;
                }
            }
            Console.WriteLine("没有在数组中找到{0}", value);
        }
        public void RemoveAt(int index)
        {
            if (index>length-1)
            {
                Console.WriteLine("当前数组只有{0},你越界了", length);
                return;
            }
            for (int i = index; i < length-1; i++)
            {
                array[i] = array[i + 1];
            }
            --length;
        }
        //查改
        public int this[int index]
        {
            get {
                if (index>=length||index<0)
                {
                    Console.WriteLine("越界");
                    return 0;
                }
                return array[index]; }
            set {
                if (index>=length||index<0)
                {
                    Console.WriteLine("越界");
                }
                array[index] = value;}
        }
        public int Length
        {
            get { return length; }
        }
    }
}

 

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

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

相关文章

大容量永磁同步电机转速电流双环PID控制MATLAB仿真模型

电气仔推送 模型简介 同步电机采用转速环PI控制&#xff0c;电流环PI控制&#xff0c;在电机转速300r/min&#xff0c;输出转矩为40000N.m时&#xff0c;电机的输出功率为1.25MW。模型各部分完整&#xff0c;电流输出正弦度好&#xff0c;谐波含量低。赠送建模说明文件&#…

PAT (Basic Level) Practice (中文)

1003 我要通过 通过观察不难发现在一个规律&#xff1a;P之前A的个数*P和T之间A的个数等于T之后A的个数答案才正确 总结一下如何才能答案正确&#xff1f; 1.必须只能有P&#xff0c;A&#xff0c;T这三种字符 2.P和T之间必须要有A 3.P之前A的个数*P和T之间A的个数等于T之…

【HTML】模拟消息折叠效果【附源代码】

文件结构 收起效果 展开效果 HTML部分 HTML部分定义了网页的结构和内容。 <!DOCTYPE html> 声明了文档类型和HTML版本。<html> 元素是所有其他HTML元素的父元素。<head> 元素包含了文档的元数据&#xff0c;如字符集、视口设置、标题和链接的样式表。<b…

高效又经济,乔拓云助力,快速上线功能全面的小程序解决方案

乔拓云模板化小程序开发费用 在当今数字化时代&#xff0c;小程序成为企业拓展市场的新利器。乔拓云平台提供模板化开发方案&#xff0c;让您的小程序能同时覆盖微信与百度&#xff0c;迅速触达更多用户。 选择乔拓云模板&#xff0c;无需从零开始设计&#xff0c;直接复用精美…

ssrf+redis未授权访问漏洞复现

目录 靶场搭建 报错问题解决 组合利用 使用goherus生成payload 靶场搭建 首先我们进入ubutuo拉取靶场 docker run -d -p 8765:80 8023/pikachu-expect:latest 报错问题解决 如果出现docker报错&#xff0c;靶场一直拉取不下来 解决办法&#xff1a;配置镜像加速器 vim /et…

二叉树中查找值为x的节点(递归查找)

一&#xff1a;前提 本文紧接此篇博客&#xff1a; 递归实现 前/中/后序 遍历二叉树 的详细讲解-CSDN博客 模型依旧为&#xff1a; 二&#xff1a;代码 三&#xff1a;递归展开 假设找3&#xff1a; 假设找 7,7不存在&#xff0c;最后返回NULL 左&#xff1a; 右&#xff1…

机器学习 第5章 神经网络

这里写目录标题 5.1 神经元模型5.2 感知机与多层网络5.3 误差逆传播算法5.4 其他常见神经网络5.4.1 RBF网络5.4.2 ART网络5.4.3 SOM网络5.4.4 级联相关网络 5.5 深度学习 5.1 神经元模型 神经网络是一种由神经元构成的计算模型&#xff0c;模拟了生物神经系统的工作原理。神经…

【MySQL】优化 - 深分页

深分页 问题优化方法子查询延迟关联游标 问题 就是查询偏移量过大的场景&#xff0c;会导致查询性能较低&#xff0c;例如 # MySQL 在无法利用索引的情况下跳过1000000条记录后&#xff0c;再获取10条记录 SELECT * FROM t_order ORDER BY id LIMIT 1000000, 10首先&#xff…

嵌入式:用J-Link Commander和J-Flash进行Flash编程的区别

相关阅读 嵌入式https://blog.csdn.net/weixin_45791458/category_12768532.html?spm1001.2014.3001.5482 J-Link Commander和J-Flash都是用于Flash编程的工具&#xff0c;但它们的功能和应用场景有所不同。以下是两者的区别&#xff1a; J-Link Commander: 类型: 命令行工…

.NET应用UI框架DevExpress XAF v24.1 - 可用性进一步增强

DevExpress XAF是一款强大的现代应用程序框架&#xff0c;允许同时开发ASP.NET和WinForms。DevExpress XAF采用模块化设计&#xff0c;开发人员可以选择内建模块&#xff0c;也可以自行创建&#xff0c;从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。 在DevEx…

为什么说中医的本质是医“中”

日前&#xff0c;与一位懂中医的朋友朋友聊天&#xff0c;他言简意赅地指出“中医的本质就是医‘中’”。反思后总结如下&#xff0c;以飨读者&#xff0c;同时欢迎批评指正&#xff01; “中医的本质是医‘中’”强调了中医的核心在于其整体观和辩证方法。中医“中”的本质在于…

【OAuth2】为什么授权码模式更安全?为什么使用授权码比直接返回token更安全?

OAuth2 什么是OAuth2OAuth2的主要角色OAuth2的工作原理OAuth2的授权模式为什么授权码模式更安全&#xff1f; 什么是OAuth2 简而言之&#xff1a;安全的用你的其他账号登陆一个新网站&#xff08;甚至访问你在其他网站上存储的私密资源&#xff08;如头像、照片等&#xff09;…

金融大模型:数据治理与AI应用创新的新时代

金融大模型&#xff1a;数据治理与AI应用创新的新时代 前言金融数据治理与应用创新的新时代 前言 在当今数字化飞速发展的时代&#xff0c;金融行业也在经历着深刻的变革。金融大模型作为一种新兴的技术力量&#xff0c;正在逐渐改变着金融数据的治理和应用方式。它不仅为金融…

利用机器学习推动 vSOC 检测

我们讨论了汽车 API 如何成为智能移动生态系统的主要攻击媒介之一。与此相关的风险是显而易见的。如果威胁行为者能够大规模远程利用 API,他们将有能力损害品牌或提出赎金请求。当然,Splunk 平台的强大之处在于能够从任何数据大规模创建任何用例。在本博客中,我们将深入研究…

使用python基于fastapi发布接口(二)-连接mysql数据库查询数据

上一章在这里 操作 MySQL 数据库使用 mysql-connector-python 库 安装mysql-connector-python pip install mysql-connector-python 代码编写在原来代码基础上添加数据库连接配置 from typing import Union from fastapi import FastAPIapp = FastAPI(

【Qt】常见控件 —— QPushButton | QRadioButton

文章目录 QPushButtonQPushButton 的基本功能介绍QPushButton 添加快捷键通过图片实现 上下左右实现方向键的槽函数设置快捷键连发功能 QRadioButtonQRadioButton 的基本功能介绍通过 QRadioButton 选择性别具有排他效果禁用 选项 槽函数的使用情况基于 QRadioButton 实现一个简…

用AppleScript做macOS UI自动化

用AppleScript做macOS UI自动化 一、定位到System Setting → General → Login Items& Extensions 页面1. 获取页面锚点&#xff0c;以便直接滑动到锚点区域2. 滑动到Extensions 区域 二、根据名称找到元素&#xff0c;再点击元素的按钮三、获取元素位置并点击 一、定位到…

人工智能边缘计算应用教学解决方案

一、引言 随着物联网&#xff08;IoT&#xff09;技术的飞速发展&#xff0c;数据生成量呈爆炸式增长&#xff0c;对数据处理速度、实时性和隐私保护的需求日益迫切。在此背景下&#xff0c;人工智能&#xff08;AI&#xff09;与边缘计算的结合成为了解决这一挑战的关键技术路…

牛客周赛 Round 57 解题报告 | 珂学家

前言 题解 难度比较适宜&#xff0c;这场周赛出的不错。 A. 小红喜欢1 题型: 签到语法 arr list(map(int, input().split()))print (arr.index(1) 1)B. 小红的树切割 思路&#xff1a;思维 统计边两端为同一颜色的边数即可 n int(input())s input()res 0 for i in r…

python爬虫,使用pyppeteer异步,爬取,获得指定标签内容

获得指定 #pip install pyppeteer,使用 Pyppeteer&#xff08;异步方案&#xff09; import asyncio from pyppeteer import launch async def main():browser await launch()page await browser.newPage()await page.goto(http://xxx/#/login)# 等待页面加载完成await page…