首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

字符不能使用IEnumerator移动精确的单位

。IEnumerator是C#中的一个接口,用于在集合中遍历元素。它提供了MoveNext()方法来移动到集合中的下一个元素,并使用Current属性来获取当前元素。然而,IEnumerator只能用于遍历集合中的元素,而不能用于移动字符或字符串中的位置。

要在字符或字符串中移动精确的单位,可以使用其他方法,如使用索引来访问特定位置的字符。在C#中,可以使用字符串的索引器来访问特定位置的字符,例如str[index]。这样可以精确地移动到字符串中的指定位置。

另外,如果需要对字符串进行更复杂的操作,可以使用字符串处理的相关方法和类,如Substring()、Split()、Regex等。这些方法和类提供了丰富的功能,可以满足不同的字符串处理需求。

总结起来,IEnumerator接口不能用于移动字符或字符串中的位置,而是用于遍历集合中的元素。要在字符或字符串中移动精确的单位,可以使用索引器或字符串处理的相关方法和类。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Unity2D开发入门-协程

启动协程 要在Unity中使用协程,可以按照以下步骤进行操作: 创建一个带有返回类型为IEnumerator的函数,并将其标记为协程。...在协程中可以使用循环、条件语句等控制流程,实现复杂的逻辑。 注意事项: 协程只能在MonoBehaviour的派生类中使用。 协程可以被中断和停止。...可以使用StopCoroutine方法停止指定的协程,或者使用StopAllCoroutines方法停止当前对象上的所有协程。...示例 在规定时间内移动到某个位置 private IEnumerator MoveObject ( Transform objectToMove, Vector3 endPosition...匀速向某个位置移动 起点到终点的向量 Vector3 direction = (endPoint - startPoint).normalized; 这样,direction 就是起点到终点的单位向量。

29240

UnityWebRequest教程☀️2021,你还在使用过时的 www API吗?

API,那么就先从Get说起 1️⃣ Get下载数据 Get可用来下载字符串、数组、图片、AB包、音频等的数据。...Put上传的东西跟Post相同,同样可以上传音视频、字符串等数据。...使用方法:见下方的 “获取要下载数据的长度”。 网络传输的API 有些人又要说了,那我会传输方法了,那怎样怎样得到传输速度呢?...比如《炉石》的是否更新界面、《和平精英》的新场景资源包界面 使用Head的好处是,Head会得到要下载数据的头文件,却不会下载文件。...第一参数规定文件指针以字节为单位移动的距离。第二个规定开始计算的位置 SeekOrigin是一个枚举,包含三个值:Begin、Current、End。

16010
  • 【Unity面试篇】Unity 面试题总结甄选 |Unity进阶篇 | ❤️持续更新❤️

    一个应用程序相当于一个进程,操作系统会以进程为单位,分配系统资源(CPU 时间片、内存等资源),进程是资源分配的最小单位。 线程 线程从属于进程,也被称为轻量级进程,是程序的实际执行者。...线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条- 线程并行执行不同的任务。...线程:多线程是阻塞式的,每个IO都必须开启一个新的线程,但是对于多CPU的系统应该使用thread,尤其是有大量数据运算的时刻,但是IO密集型就不适合;而且thread中不能操作unity的很多方法和component...(字符串形式)启动。...在编辑器模式下,我们可以在编辑和运行时将数据保存到ScriptableObject,因为保存ScriptableObject需要用到编辑器空间个脚本,但是在开发模式下不能使用ScriptableObject

    2.6K23

    .NET面试题系列 - IEnumerable

    这个类型实际上的作用就相当于Person[]或List,但我们不能使用它们,因为它们已经实现了IEnumerable,故我们构造一个People类,模拟很多人(People是Person...实现方法GetEnumerator GetEnumerator方法需要一个IEnumerator类型的返回值,这个类型是一个接口,所以我们不能这样写: return new IEnumerator();...使用yield关键字实现方法GetEnumerator 如果iterator本身有实现IEnumerator接口(本例就是一个数组),则可以有更容易的方法: public IEnumerator...在迭代的过程中改变集合的状态 foreach迭代时不能直接更改集合成员的值,但如果集合成员是类或者结构,则可以更改其属性或字段的值。不能在为集合删除或者增加成员,这会出现运行时异常。...访问IEnumerable只能通过迭代,不能使用索引器。迭代显然是非线程安全的,每次IEnumerable都会生成新的IEnumerator,从而形成多个互相不影响的迭代过程。

    65420

    C#中的枚举器(译)

    我们将以创建一个简单化的List Box作为开始,它将包含一个8字符串的数组和一个整型,这个整型用于记录数组中已经添加了多少字符串。构造函数将对数组进行初始化并使用传递进来的参数填充它。...) 和 一个返回数组中字符串个数的方法。...在这里为了程序简单就没有做数组下标越界的检测。 从感觉上看,ListBox像是一个集合,如果可以使用集合中通常使用的 foreach 循环来获取listBox中的所有字符串将会是非常便利的。...,因此 foreach 语句不能作用于“Iterator.ListBox”类型的变量 想要使用foreach语句,还必须实现IEnumerable 接口。...类它也需要一些特别了解;特别是,它必须可以获得ListBox的字符串数组并且遍历其所包含的字符串。

    1.9K40

    Coroutine,你究竟干了什么?

    延时大概是游戏编程中最司空见惯的需求之一:角色移动控制需要延时、事件触发需要延时、甚至开启一个粒子特效有时也需要延时,可以说,延时在游戏开发中几乎无处不在 :)有鉴于此,很多的游戏引擎对于延时控制都提供了很好的支持...第二个疑问就是返回类型IEnumerator,名字奇怪也就罢了,我还需要使用yield return这种奇怪的方式来进行返回,而且貌似WaitForSeconds也并不是一个所谓IEnumerator的类型...OK,让我们继续回到Unity,通过上面的这些分析,我们大概就肯定了这么一点:Unity其实是使用了迭代器来实现延时的,像IEnumerator、yield return等的使用皆是为了配合C#中迭代器的语法...,其与什么多线程之类的概念并没有多少关系,但是目前我仍然还是不能理解之前的那个最大疑问:虽然迭代器可以保留运行状态以便下次继续往下运行,但是他本身并没有提供什么机制来达到延时之类的效果,像foreach...那么精确,但也基本符合期望,简单给张截图: image.png 四 尾声   Coroutine这个东西对于我来说确实比较陌生,其中的迭代原理也困扰了我许久,不少抵触情绪也“油然而生”(在此自我反省一下

    1.1K10

    迭代器模式 与 C# IEnumeratorIEnumerable

    使用面向对象技术将这种遍历机制抽象为“迭代器对象”为“应对变化中的集合对象”提供了一种优雅的方式。...在实际的编程中,一般直接使用已有的集合元素,不必从头实现一个 IEnumerator 。 yield 是 C# 提供语法糖,可以方便的实现 IEnumerator 接口。...yield return 语句返回集合的一个元素,并移动到下一个元素,相当于同时维护 Current 和 MoveNext ;yield break 可停止迭代。...使用 yield,编译器会创建一个状态机,用于实际维护 Current 和 MoveNext。...Part5 线程安全 迭代显然是非线程安全的,每次 IEnumerable 都会生成新的 IEnumerator,从而形成多个互相不影响的迭代过程。 在迭代过程中,不能修改迭代集合,否则不安全。

    8210

    Unity【DateTime】- 如何为软件添加使用有效期

    功能需求:为软件设定一个使用有效期,当超过指定时间后,程序无法运行。 实现思路:定义一个常量,用于记录一个时间,我们称之为标记时间,使用当前时间减去标记时间,如果时间间隔大于设定的有效期,退出程序。...,如果用户故意修改计算机的时间,那么这个功能将无意义。...因此将获取当前时间的步骤修改为调用网络接口来获取时间,这里以如下这个接口为例: https://apps.game.qq.com/CommArticle/app/reg/gdate.php 使用GET...Example : MonoBehaviour { //标记时间 private const string flag = "2022-03-17 17:11:25"; //有效期 单位...,我们只需要通过Split函数将字符串分割,获取到等号后面的部分,再使用Substring函数截取‘’符号中间的部分即可: string timeStr = request.downloadHandler.text.Split

    1.4K20

    C#集合类型大盘点

    但是不同的地方在于,SortedList实际是将数据存存储在数组中的。也就是说添加和移除操作都是线性的,时间复杂度是O(n),因为操作其中的元素可能导致所有的数据移动。...LinkedList   LinkedList在内部维护了一个双向的链表,也就是说我们在LinkedList的任何位置添加或者删除数据其性能都是很快的。因为它不会导致其它元素的移动。...一般情况下List已经够我们使用了,但是如果对这个集合在中间的添加删除操作非常频繁的话,就建议使用LinkedList。 HashSet   HashSet是一个无序的能够保持唯一性的集合。...List 使用者可以精确控制元素的位置 是 Index Index: O(1) Value: O(n) O(n) 最适合需要直接访问每一个元素的少量集合。...LinkedList 使用者可以精确控制元素的位置 否 不支持 Value: O(n) O(1) 最适合不需要直接访问单个元素,但是在集合中添加/移除非常频繁的场景。

    1.1K70

    C#学习笔记四: C#2.0泛型 可控类型 匿名方法和迭代器

    运算符会将其左边的数与null进行比较, 但除了可空类型外,其他的值类型是不能与null进行比较的....匿名方法 匿名方法就是没有名字的方法. 因为没有名字, 匿名方法只能在函数定义的时候被调用, 在其他任何情况下都不能被调用....它是一个真正的集合访问器,没有它,就不能使用foreach语句遍历集合或数组,因为只有IEnumerator对象才能访问集合中的项,假如连集合中的项都访问不了,那么进行集合的循环遍历是不可能的事情了。...MoveNext方法只是将游标的内部位置向前移动(就是移到一下个元素而已),要想进行循环遍历,不向前移动一下怎么行呢? 通过注释也可以明确的发现他们的用处。...; 65 66 //这里使用yield 简化了IEnumerator GetEnumerator中的Current() MoveNext() Reset() 方法的实现 67

    1.3K110

    【学习笔记】Unity3D官方游戏教程:Tanks Tutorial

    一、前言 不总结就没有进步,不写代码就不能理解,不理解那么知识就不属于你啊!...所以不需要销毁游戏物体就能达到这种效果,记得同时禁用 GameObject 上的其它组件,比如已经死亡的坦克不能:射击、运动等。这,只是一个简单的知识点。 ? 2....3 秒钟,接着进入下一场,如此循环…… 这是一个循环模式,如果采用普通代码写出来在逻辑上会比较麻烦,使用 C# 中的 yet return 配合 IEnumerator 能够完美实现相关逻辑和代码,伪代码如下...,一看就知道怎么使用了: private void Awake() { StartCoroutine(GameLoop()); //开始进入游戏循环模式 } private IEnumerator...伪代码如下: /* *假设场景中有两个正在移动的物体:物体 1 和 物体 2 *摄像机需要随时把这两个移动的物体都显示在屏幕上 *同时,摄像机 camera 为 parentObject 的子物体

    1.3K50

    Unity-BattleStar丨10. 第九章U3D代码注解

    此方法的作用是可以从Camera的近视口nearClip向前发射一条射线到屏幕上的position点。参考点position用实际像素值的方式来决定Ray到屏幕的位置。...参考点position的X轴分量或Y轴分量从0增长到最大值时,Ray从屏幕一边移动到另一边。当Ray未能碰撞到物体时hit.point返回值为Vector3(0,0,0)。...(Input.GetKeyDown("space")) print("space key was pressed"); String.Contains 返回一个值,该值指示指定的子串是否出现在此字符串中...注意:我们不能直接用hit.方法,而是附上它的组件,再跟方法 if (hit.transform.name.Contains("Robot")) hit.transform.GetComponent...组件会直接调用内部这个名字的Animation动画 } IEnumerator GunReLoad() { while (true) {

    7310

    C#基础知识系列九(对IEnumerable和IEnumerator接口的糊涂认识)

    以备自己日后可以来翻查,同时也希望园子里的大牛们,来帮我看看理解的怎么样。 查看并使用两个接口   接下来我们先来看看两个接口的定义。   ...它是一个真正的集合访问器,没有它,就不能使用foreach语句遍历集合或数组,因为只有IEnumerator对象才能访问集合中的项,假如连集合中的项都访问不了,那么进行集合的循环遍历是不可能的事情了。...image.png 从上面我们知道IEnumerator接口定义了一个Current属性,MoveNext和Reset两个方法,这是多么的简约。既然IEnumerator对象是一个访问器。...那至少应该有一个Current属性,来获取当前集合中的项吧。MoveNext方法只是将游标的内部位置向前移动(就是移到一下个元素而已),要想进行循环遍历,不向前移动一下怎么行呢?...这里有一个版本的。 View Code 其实上面例子中的调用我们就可以使用foreach来调用了,那么现在我们来用foreach来调用看看。

    59620

    .NET面试题系列 - IEnumerable的派生类

    如果Stack中元素的数量Count小于其容量,则Push操作的复杂度为O(1)。如果容量需要被扩展,则 Push操作的复杂度变为 O(n),因为你需要移动已有的元素给新元素腾出空间。...检查字符串是否为回文的方法之一就是使用堆栈。常规算法是逐个字符的读取字符串,并且在读取时把每个字符都压入堆栈。这会产生反向存储字符串的效果。...下一步就是把堆栈内的每一个字符依次出栈,并且把它与原始字符串从开始处的对应字母进行比较。如果在任何时候发现两个字符不相同,那么此字符串就不是回文,同 时就此终止程序。...注意这个类继承自ICollection,而并没有实现IList,所以你不能通过索引器访问链表。使用情况通常是:当有非常多的在头尾进行的插入删除操作,却只有很少的访问操作时。...IEnumerator接口拥有一个Current属性,我们需要实现它的get方法,返回当前的iterator。 我们需要为IEnumerator类型增加一个int类型的值,记录当前位置。

    1.7K20
    领券