C# 属性 索引

news2024/11/26 21:31:42

一 使用属性、索引的示例

1 使用属性button1.Text

① button1.Text=“说你好”;
含义相当于button1.SetText(“说你好”);
② string s=button1.Text;

2 使用属性string s=“abcde”

① 求出长度:s.Length;
含义上相当于s.GetLength();

3 使用索引 string s=“abcde”;

① 求出第0个字符:s[0]
含义上相当于s.Get(0);

二 属性(property)的书写

private string _name;
public string Name
{
    get{
        return _name;
    }
    set{
        _name=value;
    }
}

注意:
在C# 3.0以上版中可简写为

public string Name{set;get;}

1 对属性进行访问

Person p=new Person();
p.Name="Li Ming";
Console.WriteLine(p.Name);

编译器产生的方法是

void set_Name(string value);
string get_Name();

2 属性与字段的比较

由于属性实际上是方法,所以属性可以具有优点:
① 可以只读或只写:只有get或set;
② 可以进行有效性检查:if…;
③ 可以是计算得到的数据:

public string Info
{
   get{return "Name:"+Name+",Age:"+Age;}
}

可以定义抽象属性;

3 索引器(indexer)

修饰符 类型名 this[参数列表]
{
set{}
get{}
}

4 使用索引

对象名[参数]

编译器自动产两个方法,以供调用:
T get_Item§;
void set_Item(P,T value);

5 属性与索引的比较

在这里插入图片描述

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

namespace 索引记录
{
    class IndexerRecord
    {
        private string[] data = new string[6];
        private string[] keys =
        {
            "Author","Publisher","Title",
            "Subject","ISBN","Comments"
        };

        public string this[int idx]
        {
            set { if (idx >= 0 && idx < data.Length) data[idx] = value; }
            get { if (idx >= 0 && idx < data.Length) return data[idx];
                return null;
            }
        }

        public string this[string key]
        {
            set { int idx = FindKey(key);
                this[idx] = value;
            }
            get { return this[FindKey(key)]; }
        }

        private int FindKey(string key)
        {
            for (int i = 0; i < keys.Length; i++)
                if (keys[i] == key) return i;
            return -1;
        }

        static void Main()
        {
            IndexerRecord record = new IndexerRecord();
            record[0] = "马克-吐温";
            record[1] = "Crox出版公司";
            record[2] = "汤姆-索亚历险记";

            Console.WriteLine(record["Title"]);
            Console.WriteLine(record["Author"]);
            Console.WriteLine(record["Publisher"]);

            Console.ReadKey();
        }
    }
}

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

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

相关文章

Android Material Design之TextInputLayout,TextInputEditText(十四)

效果图 资源引入 implementation com.google.android.material:material:1.4.0属性 TextInputLayout 属性描述android:id控件idandroid:layout_width控件长度android:layout_height控件高度app:boxBackgroundColor控件背景颜色app:boxBackgroundMode控件模式app:boxStrokeCol…

mysql数据库扩容中的平滑扩容

数据库扩容的过程中&#xff0c;如果想要持续对外提供服务&#xff0c;保证服务的可用性&#xff0c;平滑扩容方案是最好的选择。 平滑扩容就是将数据库数量扩容成原来的2倍&#xff0c;比如&#xff1a;由2个数据库扩容到4个数据库&#xff0c;具体步骤如下&#xff1a; &…

Java#36(网络编程)

目录 网络通信基本模式 1.Client-Server(CS)​编辑 2.Browser-Server(BS)​编辑 一.网络通信的三要素 1.IP地址: 设备在网络中的地址, 是唯一的标识 2.端口: 应用程序在设备中的唯一的标识 3.协议: 数据在网络中传输的规则, 常见的协议有UDP协议和TCP协议 UDP通信 1.D…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java在线影院系统xxdto

毕业设计也不需要做多高端的程序&#xff0c;毕业设计对于大多数同学来说&#xff0c;为什么感觉到难&#xff0c;最重要的一个原因&#xff0c;那就是理论课到实践课的转变&#xff0c;很多人一下不适应&#xff0c;本能开始拒绝&#xff0c;如果是一个考试&#xff0c;大家都…

接口功能测试经验及策略总结,希望可以帮到你

目录 前言 一、接口测试范围 二、接口测试策略 接口设计检查 接口依赖关系检查 接口输入/输出验证 密码重置接口 用户经验值查询接口 比赛成绩同步接口 三、总结 四、重点&#xff1a;配套学习资料和视频教学 前言 由于平台服务器是通过接口来与客户端交互数据提供…

CH9434 嵌入式Linux与安卓系统驱动移植和使用教程

1 前言 CH9434是一款SPI转四串口转接芯片&#xff0c;提供四组全双工的9线异步串口&#xff0c;用于单片机/嵌入式/安卓系统扩展异步串口。提供25路GPIO&#xff0c;以及支持RS485收发控制引脚TNOW。本篇基于STM32MP157处理器平台&#xff0c;介绍CH9434在嵌入式Linux系统/安卓…

Linux学习-85-memcache、Docker安装和配置(自启动)过程

17.14 memcache安装和配置&#xff08;自启动&#xff09;过程 memcache 是一个高性能的分布式的内存对象缓存系统&#xff0c;通过在内存中维护一张统一的、巨大的 Hash 表&#xff0c;它能够用来存储各种格式的数据&#xff0c;包括图像、视频、文件及数据库检索的结果等。简…

【LeetCode】1781. 所有子字符串美丽值之和

题目描述 一个字符串的 美丽值 定义为&#xff1a;出现频率最高字符与出现频率最低字符的出现次数之差。 比方说&#xff0c;“abaacc” 的美丽值为 3 - 1 2 。 给你一个字符串 s &#xff0c;请你返回它所有子字符串的 美丽值 之和。 示例 1&#xff1a; 输入&#xff1a;s …

R语言对二分连续变量进行逻辑回归数据分析

教育或医学的标准情况是我们有一项连续的措施&#xff0c;但随后我们对那些具有临床/实践意义的措施有了切入点。一个例子是BMI。 相关视频&#xff1a;R语言逻辑回归&#xff08;Logistic回归&#xff09;模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测…

springcloud04:Feign使用接口方式调用服务以及Hystrix服务熔断

Feign使用接口方式调用服务以及Hystrix服务熔断Feign负载均衡客户端集成FeignHystrixHystrix定义服务熔断服务端集成Hystrix(springcloud-provider-dept-hystrix)实现服务熔断客户端集成Hystrix实现服务降级服务监控Feign负载均衡 简介 客户端集成Feign pom文件 <!--Feig…

golang编译tag学习

官方资料 官方解释&#xff1a; https://pkg.go.dev/cmd/go#hdr-Build_constraints ,go help buildconstraint 也能看到描述 根据官方描述&#xff0c;go1.16开始建议使用go:build方式&#xff0c;与build相比更容易被人阅读。 有关go:build注释的解析&#xff1a; src/go/buil…

[附源码]Node.js计算机毕业设计道岔故障监测系统设计Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

CSS -- 05. CSS定位方式总结

文章目录CSS定位1 定位1.1 为什么需要定位1.2 定位组成1.3 静态定位 static&#xff08;了解&#xff09;1.4 相对定位 relative&#xff08;重要&#xff09;1.5 绝对定位 absolute&#xff08;重要&#xff09;1.6 子绝父相1.7 固定定位 fixed&#xff08;重要&#xff09;1.…

SpringMVC(三) 获取请求参数(干货、超详细)

1.环境搭建 见SpringMVC(一) 2.获取参数 2.1使用Servlet API获取请求参数 将HttpServletRequest作为控制器方法的形参&#xff0c;DispatcherServlet发现控制器方法有HttpServletRequest形参&#xff0c;就把参数给传进来&#xff0c;HttpServletRequest就是javaWeb中的Htt…

[附源码]计算机毕业设计房屋租赁信息系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

Python文件操作详解(一)

今天继续给大家介绍Python相关知识&#xff0c;本文主要内容是Python文件操作详解。 一、Python文件处理简介 使用Python可以编写程序处理文件&#xff0c;Python可以处理的文件值得是任何存储在辅助存储器上的数据序列。 在Python中&#xff0c;对于文件的处理通常由一定的流…

Code::Blocks(V20.03)工具安装、汉化、使用一条龙介绍

文章目录1、猿如意介绍2、Code::Blocks简介3、Code::Blocks安装3.1 下载3.2 安装3.3 汉化&#xff08;可选项&#xff09;4、Code::Blocks使用4.1 基本界面一览4.2 单个小工程5、Code::Blocks使用感受1、猿如意介绍 猿如意官网客户端下载地址 正如官网页面介绍猿如意的功能和作…

Allegro如何创建Group操作指导

Allegro如何创建Group操作指导 Allegro支持把器件,过孔和走线等等做成一个Group,对于PCB设计也很大帮助,如何创建一个group,具体操作如下 以下面图片为例 选择edit-groups Options选项里输出任意一个Group的名字 之后会出现一个Create Group弹窗,选择是 之后find选择…

年终将近,如何快速处理销售数据分析

编者按&#xff1a;如何做好企业销售数据分析&#xff0c;基于低代码平台实现的智能销售系统&#xff0c;以四大数据引擎为支撑&#xff0c;助力企业数据管理。 关键词&#xff1a;低代码平台&#xff0c;企业域管理&#xff0c;数据视图&#xff0c;智能报表&#xff0c;数据…

FFmpeg音视频编解码详解

本文你可以了解到 如何在 NDK 层调用 OpenGL ES &#xff0c;以及使用 OpenGL ES 来渲染 FFmpeg 解码出来的视频数据。 一、渲染流程介绍 在 Java 层&#xff0c;Android 已经为我们提供了 GLSurfaceView 用于 OpenGL ES 的渲染&#xff0c;我们不必关心 OpenGL ES 中关于 EGL…