C#学习相关系列之数据类型类的定义(一)

一、类的定义

        C#中类是一种引用类型,用于表示具有状态和行为的对象。类可以包含字段、属性、方法、事件等成员。

public class MyClass  
{  
    // 类的成员定义  
}

常用的关键字如下:

1、public 是一个访问修饰符,用于指定类成员的访问级别。当将类成员声明为 public 时,表示该成员可以从程序的任何地方都可以访问。(所有都能访问) 

2、private 是一个访问修饰符,用于指定类成员的访问级别。当将类成员声明为 private 时,表示该成员只能在当前类中访问,其他类无法访问。(只有本类内可以访问

3、protected 是一个访问修饰符,用于指定类成员的访问级别。当将类成员声明为 protected 时,表示该成员只能在当前类及其子类中访问,其他类无法访问。(只有在子类和父类中才能访问

4、internal 是一个访问修饰符,用于指定类成员的访问级别。当将类成员声明为 internal 时,表示该成员只能在当前程序集中访问,其他程序集无法访问。(只有在本项目中能访问,引用该dll的项目无法访问

二、类内的成员

1、字段(Fields):字段是类的私有或公共成员,用于存储类的数据。

public class MyClass  
{  private int myField; // 私有字段  public int MyPublicField; // 公共字段  
}

2、属性(Properties):属性是类的封装手段,提供了访问类的字段的方法,也可以作为数据成员来访问。

public class MyClass  
{  private int myField;  public int MyProperty { get; set; } // 自动属性  public int MyCustomProperty  {  get { return myField; }  set { myField = value; } // 也可以有更复杂的逻辑  }  
}
//其中value是get set 中默认使用的关键字//快速定义属性的方法:
MyCustomProperty =>myField  //简单方便省略的get set

3、方法(Methods):方法是类的行为或功能的具体实现。

public class MyClass  
{  public void MyMethod() // 公共方法  {  // 方法体逻辑  }  
}

4、事件(Events):事件是类的通知机制,允许其他类订阅并响应类内部发生的事件。

public class MyClass  
{  public event EventHandler MyEvent; // 事件声明  
}

5、构造函数(Constructors):构造函数用于创建和初始化一个由该类创建的对象的特殊状态。

public class MyClass  
{  public MyClass() // 构造函数,无参数的构造函数通常是公共的  {  // 构造逻辑  }  
}

6、索引器(Indexers):索引器允许类像数组一样通过索引访问。

public class MyClass  
{  public int this[int index] { get; set; } // 索引器声明,通常用于索引数组或集合的类中  
}

关于索引器的具体是用介绍:

        索引器允许一个类或结构像数组一样通过索引访问。这通常用于自定义集合或容器类,以便能够用类似于数组的语法来访问对象。 

public class MyIndexedClass  
{  private int[] array = new int[5];  // 索引器定义  public int this[int index]  {  get  {  return array[index];  }  set  {  array[index] = value;  }  }  
}

在上面的示例中,MyIndexedClass 类有一个私有的整数数组 array。通过定义一个索引器,我们可以使用类似于数组的语法来访问和修改数组中的元素。

现在,你可以使用以下代码来创建 MyIndexedClass 的实例,并使用索引器来访问和修改数组中的元素:

MyIndexedClass indexedClass = new MyIndexedClass();  
indexedClass[0] = 10; // 设置第一个元素为10  
int firstElement = indexedClass[0]; // 获取第一个元素(值为10)//需要注意的是,索引器可以具有多个参数,这使得它们非常灵活。
//例如,你可以定义一个双参数索引器来访问二维数组或类似的数据结构。

7、 嵌套类型(Nested Types):类内部可以定义其他类、结构、枚举或接口。这些嵌套的类型在外部类的作用域内是私有的。

public class OuterClass  
{  private class NestedClass { } // 嵌套类作为类的私有成员类型使用  
}

在后续的类中我会专门讲解一下这个嵌套类型,例如方法内嵌套方法,类内嵌套类等等 

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

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

相关文章

【日常笔记】notepad++ 正则表达式基本用法

一、场景 二、正则表达式--语法 2.1、学习基本的匹配字符: 2.2、学习特殊字符和量词: 2.3、学习转义字符 2.4、学习分组和捕获 2.5、区分大小写 和 匹配整个单词 2.6、引用分组 三、实战 ▶ 希望把课程目录中 -- 前面的都去掉 一、场景 希望把…

Jrebel 在 Idea 2023.3中无法以 debug 的模式启动问题

Jrebel 在 Idea 2023.3中无法以 debug 的模式启动问题 Idea 在升级了2023.3以后,Jrebel 无法以 debug 的模式启动,找了半天,最后在插件主页的评论区找到了解决方案 特此记录一下

Dockerfile:创建镜像,创建自定义的镜像。

Docker的创建镜像的方式: 基于已有镜像进行创建。 根据官方提供的镜像源,创建镜像,然后拉起容器。是一个白板,只能提供基础的功能,扩展性的功能还是需要自己定义(进入容器进行操作) 基于模板进…

如何使用Composer安装第三方库?

Composer 是 PHP 的一个依赖管理工具,用于管理项目中的依赖库(包)。以下是使用 Composer 安装第三方库的一般步骤: 步骤: 安装 Composer: 如果尚未安装 Composer,请按照 Composer 官方网站 上的…

SpringBoot 基础概念:SpringApplication#getSpringFactoriesInstances

SpringBoot 基础概念&#xff1a;SpringApplication#getSpringFactoriesInstances SpringApplication#getSpringFactoriesInstances SpringApplication#getSpringFactoriesInstances private <T> Collection<T> getSpringFactoriesInstances(Class<T> type,…

在 Spring Boot 中发送邮件简单实现

Spring Boot 对于发送邮件这种常用功能也提供了开箱即用的 Starter&#xff1a;spring-boot-starter-mail。 通过这个 starter&#xff0c;只需要简单的几行配置就可以在 Spring Boot 中实现邮件发送&#xff0c;可用于发送验证码、账户激活等等业务场景。 本文将通过实际的案…

【AI美图】第03期效果图,AI人工智能全自动绘画,二次元美图欣赏

带来一组二次元人工智能自动绘图 对比分析&#xff1a; 标题手画二次元需要技巧&#xff1a; 二次元高清图片的绘制技巧主要包括以下几点&#xff1a; 线条的运用&#xff1a;在二次元风格的绘画中&#xff0c;线条的运用非常重要。要绘制出流畅、细腻的线条&#xff0c;需…

用于自动驾驶的基于深度学习的图像 3D 物体检测:综述

论文地址&#xff1a;https://ieeexplore.ieee.org/abstract/document/10017184/ 背景 准确、鲁棒的感知系统是理解自动驾驶和机器人驾驶环境的关键。自动驾驶需要目标的 3D 信息&#xff0c;包括目标的位置和姿态&#xff0c;以清楚地了解驾驶环境。 摄像头传感器因其颜色和…

初识JVM底层知识,一文读懂JVM知识文集。

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

nginx反向代理实践指南:访问Tomcat

目录 前言1 实现的效果2 访问流程分析3 安装tomcat并测试4 配置4.1 在Windows系统的hosts文件进行域名和IP对应关系的配置4.2 在NGINX进行请求转发的配置&#xff08;反向代理配置&#xff09; 5 最终测试结论 前言 从Windows系统访问Tomcat Web应用程序&#xff0c;设置和配置…

VUE-脚手架搭建

文章目录 一、概述二、前提准备1. 安装 node-js2. npm 镜像设置3. 安装 vs-code 三、脚手架搭建1. Vue-2 搭建1. Vue-3 搭建 一、概述 官网&#xff1a;http://cn.vuejs.org/ vue 有两个大版本&#xff0c;分别是 vue-2 和 vue-3&#xff0c;目前新项目的话用 vue-3 的会比较多…

【Hadoop-OBS-Hive】利用华为云存储对象 OBS 作为两个集群的中间栈 load 文件到 Hive

【Hadoop-OBS-Hive】利用华为云存储对象 OBS 作为两个集群的中间栈 load 文件到 Hive 1&#xff09;压缩文件2&#xff09;上传文件到 OBS 存储对象3&#xff09;crontab 定时压缩上传4&#xff09;从 obs 上拉取下来文件后解压缩5&#xff09;判断对应文件是否存在6&#xff0…

Elasticsearch 进阶(索引、类型、字段、分片、副本、集群等详细说明)-06

笔记来源&#xff1a;Elasticsearch Elasticsearch进阶 进阶-核心概念 索引Index 一个索引就是一个拥有几分相似特征的文档的集合。比如说&#xff0c;你可以有一个客户数据的索引&#xff0c;另一个产品目录的索引&#xff0c;还有一个订单数据的索引。一个索引由一个名字…

RT-DETR 图片目标计数 | 特定目标进行计数

全类别计数特定类别计数如何使用 RT-DETR 进行对象计数 有很多同学留言说想学 RT-DETR 目标计数。那么今天这篇博客,我将教大家如何使用 RT-DETR 进行对象计数。RT-DETR 是一种非常强大的对象检测模型,它可以识别图像中的各种对象。我们将学习如何利用这个模型对特定对象进行…

迅为RK3568开发板使用OpenCV处理图像-ROI区域-位置提取ROI

在图像处理过程中&#xff0c;我们可能会对图像的某一个特定区域感兴趣&#xff0c;该区域被称为感兴趣区域&#xff08;Region of Interest, ROI&#xff09;。在设定感兴趣区域 ROI 后&#xff0c;就可以对该区域进行整体操作。 位置提取 ROI 本小节代码在配套资料“iTOP-3…

C++ 学习系列 -- 模板 template

一 C 模板介绍&#xff1f; C 为什么引入模板&#xff1f; 我的理解是&#xff1a; C 引入模板的概念&#xff0c;是为了复用重复的代码&#xff0c;当某些代码除了操作的数据类型不同以外&#xff0c;其他逻辑全都相同&#xff0c;此时就适合采用模板的方式。 定义模板类或者…

黑豹程序员-axios+springmvc传递数组

问题 奇怪的现象&#xff0c;axios在往后台传递数组时&#xff0c;springmvc竟然接收不到 解决 尝试多次无果&#xff0c;突然看一篇文章写vue中的数组不是真正的数组需要强转转化JSON.stringify 将信将疑下测试了一把&#xff0c;还真的传递成功了。 不光要JSON.stringify…

牛客后端开发面试题3

阿里巴巴2021 1、通配符的含义 在字符串匹配时可以代替一定范围的字符。 2、死锁的基本知识 产生死锁的原因&#xff1a; 1.系统资源不足 2.进程运行推进方式不合理 3.分配资源不合理 &#xff08;把幼儿园老师比作操作系统&#xff0c;幼儿园里的玩具比作系统资源&#xff0c…

Github 2023-12-15 开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2023-12-15统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量TypeScript项目3非开发语言项目3JavaScript项目1Python项目1Rust项目1PHP项目1 基于项目的学习 创建周期&am…

微服务组件Sentinel的学习(3)

Sentinel 隔离和降级Feign整合Sentinel线程隔离熔断降级熔断策略 授权规则&#xff1a;自定义异常 隔离和降级 虽然限流可以尽量避免因高并发而引起的服务故障&#xff0c;但服务还会因为其它原因而故障。而要将这些故障控制在一定范用避免雪崩&#xff0c;就要靠线程隔离(舱壁…