构造函数的小白理解
一、实例
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…...
【课程总结】Day12:YOLO的深入了解
前言 在【课程总结】Day11(下):YOLO的入门使用一节中,我们已经了解YOLO的使用方法,使用过程非常简单,训练时只需要三行代码:引入YOLO,构建模型,训练模型;预测…...
保护隐私,释放智能:使用LangChain和Presidio构建安全的AI问答系统
保护隐私,释放智能:使用LangChain和Presidio构建安全的AI问答系统 在人工智能(AI)飞速发展的今天,AI问答系统已经成为企业与客户互动的重要工具。然而,随之而来的个人数据隐私问题也日益凸显。如何在不泄露…...
【高考志愿】自动化
目录 一、专业概述 二、课程设计 三、就业前景与方向 四、志愿填报 五、自动化专业排名 一、专业概述 高考志愿自动化专业选择,无疑是迈向现代化工业与科技发展的一把金钥匙。自动化专业,作为现代工程领域的重要支柱,融合了计算机、电子…...
技巧类题目
目录 技巧类题目 136 只出现一次的数字 191 位1的个数 231. 2 的幂 169 多数元素 75 颜色分类 (双指针) 287. 寻找重复数 136 只出现一次的数字 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均…...
Vue3自定义指令参数修饰符值(3)
自定义指令参数修饰符值 在vue3中我们如何获取自定义的参数的内容,并根据业务来修改展示的内容呢,需要依靠mounted方法中的bindings参数来获取。 参考实例 directives/unit.js文件 export default function directiveUnit(app){app.directive("unit",{…...
HTML(23)——垂直对齐方式
垂直对齐方式 属性名:vertical-align 属性值效果baseline基线对齐(默认)top顶部对齐middle居中对齐bottom底部对齐 默认情况下浏览器对行内块,行内标签都按文字处理,默认基线对齐 导致图片看起来会偏上,文字偏下。 示例&#…...
linux查看二进制文件
在Linux中,查看二进制文件可以使用hexdump或xxd命令。 例如,要查看一个名为example.bin的二进制文件的内容,可以使用以下命令之一: 使用hexdump: bash hexdump -C example.bin使用xxd: bash xxd exam…...
营销翻车,杜国楹出面道歉,小罐茶的“大师作”故事仓皇结尾
“小罐茶,大师作”,这句slogan曾一度在央视平台长时间、高密度播放,成为家喻户晓的广告词,也打响了小罐茶品牌的名号。但同时,市场上关于“大师作”真实性的质疑也从未停息。 就在6月25日小罐茶十二周年发布会上&#…...
linux server下人脸检测与识别服务程序的系统架构设计
一、绪论 1.1 定义 1.2 研究背景及意义 1.3 相关技术综述 二、人脸检测与识别技术概述 2.1 人脸检测原理与算法 2.2 人脸识别技术及方法 2.3 人脸识别过程简介 三、人脸检测与识别服务程序的系统架构 3.1 系统架构设计 3.2 技术实现流程 四、后续设计及经验瞎谈 4.…...
安装CLion配置opencv和torch环境
配置操作如图,源码见底部附录部分 安装CLion 官网下载 创建项目 设置环境 调整类型为release 配置opencv和项目 编译环境 编译后 重启CLion 测试opencv环境 测试代码 运行main.cpp显示图片 测试torch环境 没标红表示配置成功 附件 CMakeList.txt cmake_mi…...
做网站免费搭建/seo综合查询站长工具怎么用
多线程并发编程如何正确的执行程序: - 原子性:执行过程要么成功要么失败,比如经典的银行转账问题。 - 可见性:多线程并发时,一个线程修改了工作内存中的值(主存中的值),会立刻改变主…...
做自己的直播网站/潍坊网站关键词推广
clean the macOS, no more input installed;in Xcode, run debug;drag debug app to ~/library/input methods;to systray, add input;in Xcode, active the input;it works!if no effect, go to 1, and then restar macOS, go to 1....
做网站如何突出网站特色/百度收录要多久
CentOS5、6系统的启动流程基于Intel X86架构平台的系统启动流程:1.POST:Power-On Self Testing,加电自检;CMOS:在这里面有一个EPROM,可擦写可编程的只读存储器;在这里面保存了一小段程序叫做BIO…...
网页网站开发平台/学开网店哪个培训机构好正规
layout动画在每次布局发生变化的时候系统调用的一个预加载动画效果,使用layout动画可以让布局的变化过度看起来更自然。使用起来很简单,只需在控件中添加一个属性就可以了,系统默认是不会启动layout动画的,因此我们平时的应用中不…...
小说网站的网编具体做哪些工作/百度指数关键词搜索趋势
状态代码(head)1xx 纯信息(请求已被服务器接受)2xx 成功类(请求已成功地被服务器接收)3xx 重定向(需要后续操作才能完成这一请求)4xx 客户端错误(请求含有词…...
东营网站制作团队/网络营销策划的方法
在学习完了SQL注入的原理、SQL注入的类型后那么可以说SQL注入已经大致了解了,但事实是现实中开发人员不可能让你这么简单就攻击到数据库,他们一般会对已输入或可输入的数据做一定限制,这篇文章我主要对SQL注入中代码或者waf过滤的绕过做一次总…...