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

构造函数的小白理解

一、实例
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;//定义一个名为Question的类,用于存储问题及相关信息
[Serializable]
public class Question
{public string questionText;//存储题目文本字段public string optionTextA;//选项A文本public string optionTextB;public string optionTextC;public string optionTextD;public string answerText;public Question(string question, string optionA, string optionB, string optionC, string optionD, string answer){//初始化questionText为questionquestionText = question;optionTextA = optionA;optionTextB = optionB;optionTextC = optionC;optionTextD = optionD;answerText = answer;}
}
二、组成

三、作用

用于初始化类的字段,规定了当创建类的实例时应该如何设置字段的值。

四、基本写法
  • 首先,定义类名(例如 Question)。
  • 在类内部,定义构造函数。构造函数的名字与类名相同。
  • 在构造函数的参数列表中列出需要的参数。
  • 在构造函数的主体中,使用这些参数来初始化类的字段。
五、粗暴理解

构造函数实质上是不是就是用来规定由它创建的对象的格式的?(就是这个新创建出来的对象是由什么组成的)

答:是的,构造函数的主要作用之一就是定义当创建类的对象时应该如何初始化对象的状态。它规定了新创建的对象应该包含哪些字段(属性),并且这些字段的初始值是如何通过构造函数的参数来设置的。所以,构造函数确实可以看作是规定了由它创建的对象的“格式”或“组成”。

六、改进后的版本
using System;
using UnityEngine;//定义一个名为Question的类,用于存储问题及相关信息
[Serializable]
public class Question
{private string questionText;//存储题目文本字段private string optionTextA;//选项A文本private string optionTextB;private string optionTextC;private string optionTextD;private string answerText;public string QuestionText//定义一个名字为QuestionText的公共属性{//get访问器。在类的外部通过公共属性(QuestionText)访问questionText这个私有字段的值get { return questionText; }//set访问器。在类的外部通过QuestionText修改questionText这个私有字段的值set { this.questionText = value; }}public string OptionTextA{// get 访问器:返回 optionTextA 的值get { return optionTextA; }// set 访问器:接收一个 string 类型的值,并将其赋值给 optionTextAset { this.optionTextA = value; }}public string OptionTextB{get { return optionTextB; }set { this.optionTextB = value; }}public string OptionTextC{get { return optionTextC; }set { this.optionTextC = value; }}public string OptionTextD{get { return optionTextD; }set { this.optionTextD = value; }}public string AnswerText{get { return answerText; }set { this.answerText = value; }}public Question(string question, string optionA, string optionB, string optionC, string optionD, string answer){//初始化questionText为questionthis.questionText = question;this.optionTextA = optionA;this.optionTextB = optionB;this.optionTextC = optionC;this.optionTextD = optionD;this.answerText = answer;}
}
七、调用文本

//文本的路径(储存在filePath中)
string filePath = Path.Combine(Application.streamingAssetsPath, "test_01.txt");

string filePath

声明一个字符串类型的变量 filePath

Path.Combine() 

一个静态方法

用于将多个字符串组合成一个完整的路径字符串

这个方法会智能地处理路径中的分隔符,确保在不同操作系统上(如Windows使用\,而UNIX和Linux使用/)都能生成正确的路径。

Application.streamingAssetsPath 

Unity提供的一个属性

是返回streamingAssets文件夹的路径。

Path.Combine() 将这个路径(Application.streamingAssetsPath )和文件名 "test_01.txt" 结合起来,形成一个完整的文件路径。

// 使用File.OpenText打开文件,并创建一个StreamReader类型的变量(reader)读取内容
using (StreamReader reader = File.OpenText(filePath))
{
}

using (StreamReader reader = File.OpenText(filePath))

File.OpenText(filePath)

调用 File.OpenText(filePath)

StreamReader reader

创建一个名为readerStreamReader类对象,并将 StreamReader 对象赋值给 reader

StreamReader

从文件中读取字符

reader 

存储了一个可以从文件中读取文本的对象(StreamReader)。通过 reader 对象读取 test_01.txt 文件的内容

using 

确保 StreamReader 对象在使用完毕后被正确地关闭和释放。防止资源泄露

//声明字符串变量(line)用于存储从文件中读取的每一行内容
string line;
//逐行读取内容,直到读取到内容末尾
while ((line = reader.ReadLine()) != null){}

while ((line = reader.ReadLine()) != null) 

reader.ReadLine()

调用 reader.ReadLine() 从 reader中读取下一行文本

line = reader.ReadLine()

将读取到的文本(即一行字符串)赋值给 line 变量

!= null

检查 line 是否为 null。如果 line 不是 null,那么说明读取到了新的一行内容;如果 line 是 null,那么说明已经读取到了文件的末尾,没有更多的行可以读取了

如果 line 不是 null(即读取到了新的一行内容),那么执行 while 循环体内的代码块 {} 中的内容

这个 while 循环会一直执行,直到读取到文件的末尾(即 reader.ReadLine() 返回 null)。在循环体内,可对每一行内容 line 进行处理,比如打印出来、添加到列表中等等。

当 reader.ReadLine() 返回 null 时,while 循环的条件不再满足,循环就会结束,此时也可以选择在循环体外打印一条消息,说明已经读取完了文件的所有内容

八、显示文本——待改进
using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;public class QuizManager : MonoBehaviour
{public TextMeshProUGUI questionTextDisplay; // 假设您有一个UI Text组件用于显示问题public TextMeshProUGUI[] optionTextDisplays; // 假设您有一个Text数组用于显示选项private List<Question> questions = new List<Question>(); // 存储问题的列表private int currentQuestionIndex = 0; // 当前问题的索引// 初始化问题和选项void Start(){// 示例:添加问题到列表中questions.Add(new Question("问题1", "选项A1", "选项B1", "选项C1", "选项D1", "答案1"));questions.Add(new Question("问题2", "选项A2", "选项B2", "选项C2", "选项D2", "答案2"));// ... 添加更多问题// 显示第一个问题ShowQuestion(currentQuestionIndex);}void ShowQuestion(int index){if (index < 0 || index >= questions.Count) return; // 索引越界检查Question question = questions[index];// 显示问题文本questionTextDisplay.text = question.QuestionText;// 显示选项文本for (int i = 0; i < optionTextDisplays.Length && i < 4; i++) // 假设最多4个选项{string optionText = "选项不存在"; // 默认文本,以防索引越界switch (i){case 0: optionText = question.OptionTextA; break;case 1: optionText = question.OptionTextB; break;case 2: optionText = question.OptionTextC; break;case 3: optionText = question.OptionTextD; break;}optionTextDisplays[i].text = optionText;}}
}

相关文章:

构造函数的小白理解

一、实例 using System; using System.Collections; using System.Collections.Generic; using UnityEngine;//定义一个名为Question的类&#xff0c;用于存储问题及相关信息 [Serializable] public class Question {public string questionText;//存储题目文本字段public str…...

招聘,短信与您:招聘人员完整指南

招聘人员面临的最大挑战之一就是沟通和联系候选人。为何?我们可以从以下原因开始&#xff1a;候选人通常被太多的招聘人员包围&#xff0c;试图联系他们&#xff0c;这使得你很难吸引他们的注意。在招聘过程的不同阶段&#xff0c;根据不同的工作量&#xff0c;让申请人保持最…...

JAVA-矩阵置零

给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 思路&#xff1a; 找到0的位置&#xff0c;把0出现的数组的其他值夜置为0 需要额外空间方法&#xff1a; 1、定义两个布尔数组标记二维数组中行和列…...

[信号与系统]模拟域中的一阶低通滤波器和二阶滤波器

前言 不是学电子出身的&#xff0c;这里很多东西是问了朋友… 模拟域中的一阶低通滤波器传递函数 模拟域中的一阶低通滤波器的传递函数可以表示为&#xff1a; H ( s ) 1 s ω c H(s) \frac{1}{s \omega_c} H(s)sωc​1​ 这是因为一阶低通滤波器的设计目标是允许低频信…...

Mac环境 aab包转apks,并安装apks

一、下载下载bundletool工具 Releases google/bundletool GitHub 二、将下载bundletool.jar包、aab、keystore文件全部放到同一个目录下 例如我全部放到download目录下 转换命令行&#xff1a; java -jar bundletool-all-1.16.0.jar build-apks --modeuniversal --bundle…...

银河麒麟V10 SP1.1操作系统 离线安装 nginx1.21.5、redis 服务

银河麒麟官网地址&#xff1a;国产操作系统、麒麟操作系统——麒麟软件官方网站 一、查看系统版本 命令&#xff1a;nkvers 我的是 release V10 (SP1)&#xff0c;根据这个版本去官网找对应的rpm包 银河麒麟操作系统的rpm包必须从官方找&#xff0c; 要是随便找个Centos的rp…...

ios swift5 视频播放 播放视频失败 无法播放HEVC (H.265) 格式的视频 H.264格式的可以播放

文章目录 1.问题2.原因&#xff1a;iOS swift AVPlayerViewController无法播放HEVC (H.265) 格式的视频3.解决方法用第三方框架MobileVLCKit来播放4.用MobileVLCKit写的播放器4.1 两个oc版本的4.2 两个swiftUI版本的5.苹果是支持HEVC (H.265) 格式的视频&#xff0c;是硬件那边…...

网工内推 | 网络工程师,IE认证优先,最高18k*14薪,周末双休

01 上海吾索信息科技有限公司 &#x1f537;招聘岗位&#xff1a;网络工程师 &#x1f537;岗位职责&#xff1a; 1&#xff09;具备网络系统运维服务经验以及数据库实施经验&#xff0c;具备网络系统认证相关资质或证书&#xff1b; 2&#xff09;掌握常用各设备的运维巡检…...

【Qt】QMessageBox 各种对话框的默认显示效果

1. 函数原型 void about(QWidget *parent, const QString &title, const QString &text)void aboutQt(QWidget *parent, const QString &title QString())QMessageBox::StandardButton critical(QWidget *parent, const QString &title, const QString &…...

一文弄懂线性回归模型

1、引言 今天&#xff0c;我们将深入探讨机器学习中的三个关键概念&#xff1a;线性回归、代价函数和梯度下降。这些概念构成了许多机器学习算法的基础。起初&#xff0c;我决定不写一篇关于这些主题的文章&#xff0c;因为它们已经被广泛涉及。不过&#xff0c;我改变了主意&…...

uniApp获取实时定位

通过你获取的key放到项目manifest.json里面&#xff0c;对应填写你所需要的key值&#xff0c;还有高德用户名 用户名&#xff1a; key值的位置&#xff1a; 代码&#xff1a; html: <view class"intList pdNone"><view class"label">详细地…...

linux的source命令

用法 source file 也可以用.空格file来代替 . file 作用 在当前bash环境下读取并执行FileName中的命令. source(或点)令通常用于重新执行刚修改的初始化文档&#xff0c;如 .bash_profile 和 .profile等配置文件. 简单的说就是: source命令会把file里的命令在当前shell里一…...

特种作业操作证(焊接与热切割作业)2024年理论考试题库。

1.关于隐弧排烟罩下列说法正确的是&#xff08;&#xff09;。 A.这类排烟罩适用于焊接大而长的焊件时排除电焊烟尘和有毒气体 B.这类排烟罩对焊接区实行密闭&#xff0c;能最大限度地减少臭氧等有毒气体的弥散 C.利用压缩空气从主管中高速喷出时&#xff0c;在副管形成负压…...

免交互和嵌入执行模式

目录 概念 语法格式 统计行数 赋值变量 修改密码​编辑往文件里添加内容 ​编辑​编辑引入变量 整体赋值​编辑 加引号不赋值变量 expect实现免交互 免交互设置密码 免交互切换用户 嵌入执行模式 添加用户并免交互设置密码 免交互登录 传参实现ssh 练习 概念 …...

Hadoop版本演变、分布式集群搭建

Hadoop版本演变历史 Hadoop发行版非常的多&#xff0c;有华为发行版、Intel发行版、Cloudera Hadoop(CDH)、Hortonworks Hadoop(HDP)&#xff0c;这些发行版都是基于Apache Hadoop衍生出来的。 目前Hadoop经历了三个大的版本。 hadoop1.x&#xff1a;HDFSMapReduce hadoop2.x…...

【Qt C++实现绘制仪表盘】

要在Qt C中绘制仪表盘&#xff0c;您可以使用QChart、QSeries、QBarSeries、QPointSeries等类。以下是一个简单的示例&#xff0c;演示如何使用这些类创建一个绘图仪表盘&#xff1a; #include <QApplication> #include <QChart> #include <QChartView> #in…...

一文看懂LLaMA 2:大型多模态模型的新里程碑

一文看懂LLaMA 2&#xff1a;大型多模态模型的新里程碑 LLaMA 2是OpenAI继GPT-3之后推出的又一重磅模型&#xff0c;它不仅在文本生成方面有所突破&#xff0c;而且在图像处理和语音识别等领域也展现出了令人印象深刻的能力。本文将全面介绍LLaMA 2的背景、技术细节、应用场景…...

基于Spring Boot构建淘客返利平台

基于Spring Boot构建淘客返利平台 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将讨论如何基于Spring Boot构建一个淘客返利平台。 淘客返利平台通过…...

Qt—贪吃蛇项目(由0到1实现贪吃蛇项目)

用Qt实现一个贪吃蛇项目 一、项目介绍二、游戏大厅界面实现2.1完成游戏大厅的背景图。2.2创建一个按钮&#xff0c;给它设置样式&#xff0c;并且可以跳转到别的页面 三、难度选择界面实现四、 游戏界面实现五、在文件中写入历史战绩5.1 从文件里提取分数5.2 把贪吃蛇的长度存入…...

Java导出Excel并邮件发送

一、导出Excel 添加maven依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.10-FINAL</version></dependency><dependency><groupId>org.apache.poi</groupI…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...