构造函数的小白理解
一、实例
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
创建一个名为reader的StreamReader类对象,并将 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的类,用于存储问题及相关信息 [Serializable] public class Question {public string questionText;//存储题目文本字段public str…...
招聘,短信与您:招聘人员完整指南
招聘人员面临的最大挑战之一就是沟通和联系候选人。为何?我们可以从以下原因开始:候选人通常被太多的招聘人员包围,试图联系他们,这使得你很难吸引他们的注意。在招聘过程的不同阶段,根据不同的工作量,让申请人保持最…...
JAVA-矩阵置零
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 思路: 找到0的位置,把0出现的数组的其他值夜置为0 需要额外空间方法: 1、定义两个布尔数组标记二维数组中行和列…...
[信号与系统]模拟域中的一阶低通滤波器和二阶滤波器
前言 不是学电子出身的,这里很多东西是问了朋友… 模拟域中的一阶低通滤波器传递函数 模拟域中的一阶低通滤波器的传递函数可以表示为: H ( s ) 1 s ω c H(s) \frac{1}{s \omega_c} H(s)sωc1 这是因为一阶低通滤波器的设计目标是允许低频信…...
Mac环境 aab包转apks,并安装apks
一、下载下载bundletool工具 Releases google/bundletool GitHub 二、将下载bundletool.jar包、aab、keystore文件全部放到同一个目录下 例如我全部放到download目录下 转换命令行: java -jar bundletool-all-1.16.0.jar build-apks --modeuniversal --bundle…...
银河麒麟V10 SP1.1操作系统 离线安装 nginx1.21.5、redis 服务
银河麒麟官网地址:国产操作系统、麒麟操作系统——麒麟软件官方网站 一、查看系统版本 命令:nkvers 我的是 release V10 (SP1),根据这个版本去官网找对应的rpm包 银河麒麟操作系统的rpm包必须从官方找, 要是随便找个Centos的rp…...
ios swift5 视频播放 播放视频失败 无法播放HEVC (H.265) 格式的视频 H.264格式的可以播放
文章目录 1.问题2.原因:iOS swift AVPlayerViewController无法播放HEVC (H.265) 格式的视频3.解决方法用第三方框架MobileVLCKit来播放4.用MobileVLCKit写的播放器4.1 两个oc版本的4.2 两个swiftUI版本的5.苹果是支持HEVC (H.265) 格式的视频,是硬件那边…...
网工内推 | 网络工程师,IE认证优先,最高18k*14薪,周末双休
01 上海吾索信息科技有限公司 🔷招聘岗位:网络工程师 🔷岗位职责: 1)具备网络系统运维服务经验以及数据库实施经验,具备网络系统认证相关资质或证书; 2)掌握常用各设备的运维巡检…...
【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、引言 今天,我们将深入探讨机器学习中的三个关键概念:线性回归、代价函数和梯度下降。这些概念构成了许多机器学习算法的基础。起初,我决定不写一篇关于这些主题的文章,因为它们已经被广泛涉及。不过,我改变了主意&…...
uniApp获取实时定位
通过你获取的key放到项目manifest.json里面,对应填写你所需要的key值,还有高德用户名 用户名: key值的位置: 代码: html: <view class"intList pdNone"><view class"label">详细地…...
linux的source命令
用法 source file 也可以用.空格file来代替 . file 作用 在当前bash环境下读取并执行FileName中的命令. source(或点)令通常用于重新执行刚修改的初始化文档,如 .bash_profile 和 .profile等配置文件. 简单的说就是: source命令会把file里的命令在当前shell里一…...
特种作业操作证(焊接与热切割作业)2024年理论考试题库。
1.关于隐弧排烟罩下列说法正确的是()。 A.这类排烟罩适用于焊接大而长的焊件时排除电焊烟尘和有毒气体 B.这类排烟罩对焊接区实行密闭,能最大限度地减少臭氧等有毒气体的弥散 C.利用压缩空气从主管中高速喷出时,在副管形成负压…...
免交互和嵌入执行模式
目录 概念 语法格式 统计行数 赋值变量 修改密码编辑往文件里添加内容 编辑编辑引入变量 整体赋值编辑 加引号不赋值变量 expect实现免交互 免交互设置密码 免交互切换用户 嵌入执行模式 添加用户并免交互设置密码 免交互登录 传参实现ssh 练习 概念 …...
Hadoop版本演变、分布式集群搭建
Hadoop版本演变历史 Hadoop发行版非常的多,有华为发行版、Intel发行版、Cloudera Hadoop(CDH)、Hortonworks Hadoop(HDP),这些发行版都是基于Apache Hadoop衍生出来的。 目前Hadoop经历了三个大的版本。 hadoop1.x:HDFSMapReduce hadoop2.x…...
【Qt C++实现绘制仪表盘】
要在Qt C中绘制仪表盘,您可以使用QChart、QSeries、QBarSeries、QPointSeries等类。以下是一个简单的示例,演示如何使用这些类创建一个绘图仪表盘: #include <QApplication> #include <QChart> #include <QChartView> #in…...
一文看懂LLaMA 2:大型多模态模型的新里程碑
一文看懂LLaMA 2:大型多模态模型的新里程碑 LLaMA 2是OpenAI继GPT-3之后推出的又一重磅模型,它不仅在文本生成方面有所突破,而且在图像处理和语音识别等领域也展现出了令人印象深刻的能力。本文将全面介绍LLaMA 2的背景、技术细节、应用场景…...
基于Spring Boot构建淘客返利平台
基于Spring Boot构建淘客返利平台 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将讨论如何基于Spring Boot构建一个淘客返利平台。 淘客返利平台通过…...
Qt—贪吃蛇项目(由0到1实现贪吃蛇项目)
用Qt实现一个贪吃蛇项目 一、项目介绍二、游戏大厅界面实现2.1完成游戏大厅的背景图。2.2创建一个按钮,给它设置样式,并且可以跳转到别的页面 三、难度选择界面实现四、 游戏界面实现五、在文件中写入历史战绩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…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...
