dotnet C# 分享基础 for 循环的写法

news/2024/11/16 21:16:08/文章来源:https://www.cnblogs.com/lindexi/p/18351898

本文将来和大家聊聊在 dotnet C# 里面的基础的 for 循环语法的写法

使用 for 作为循环的写法是在编程里面常用的代码写法。比如说我有一个名为 Foo 的类型,这个类型提供了一个名为 GetCount 的方法,这个方法可以缓慢的获取 Foo 里面的一个代表数量的值。且在 Foo 类型里面提供了索引器,可以根据传入的下标序号返回一个字符串,例子代码如下

class Foo
{public string this[int index]{get{return "Hello" + index;}}public int GetCount(){// 模拟一个耗时的操作Thread.Sleep(100);return 100;}
}

假定现在的需求是需要遍历 Foo 返回的数量,通过 Foo 的索引器获取其值。那么最简单的写法大概如下

var foo = new Foo();for (int i = 0; i < foo.GetCount(); i++)
{var value = foo[i];_ = value;
}

如以上代码所示,在 for 循环里面,通过在条件语句里面的 i < foo.GetCount() 判断是否超过了 Foo 数量范围,从而完成循环条件判断

以上代码的 _ = value; 只是用于示例表示取出了 value 值,模拟拿出去用。这里的 _ = 表示的是右值不受关注,不受使用,只是一个让编译器开森的代码,让编译器不要警告说 value 局部变量没地方使用而已

由于 Foo 的 GetCount 方法是耗时的,以上代码将会在每次循环判断条件语句里面调用 GetCount 方法。无疑这将会是低效率的

咱又提前知道了 GetCount 方法的返回值不会在循环过程中变更,一个比较好的方法就是提前先取出 GetCount 方法的返回值,将返回值存放到局部变量里面,如此即可减少此方法的调用

var fooCount = foo.GetCount();
for (int i = 0; i < fooCount; i++)
{var value = foo[i];_ = value;
}

如上述代码所示,可以看到在 for 分支判断语句里面只使用 i < fooCount 判断逻辑,不再需要每次判断时都调用 GetCount 方法,可以提升不少的性能

然而以上代码却多引入了一行 var fooCount = foo.GetCount(); 代码,代码行数上比不过最初的代码。在不关注耗时或性能的代码上,这样看起来最初的循环代码会比上述代码更加简短

如果只是为了减少代码行,那可以将 var fooCount = foo.GetCount(); 放入到 for 循环的初始化表达式语句里面编写,如下面代码

for (int i = 0, count = foo.GetCount(); i < count; i++)
{var value = foo[i];_ = value;
}

以上的 for 循环语句的初始化表达式的代码就是 int i = 0, count = foo.GetCount() 同时初始化 i 和 count 两个局部变量

尽管以上两个代码看起来行数不相同,但从底层上没有差别

以上例子只是告诉大家不要有编程的习惯,误以为 for 循环的初始化语句只能初始化循环的索引局部变量。其实在 for 循环的初始化语句里面可以放入你开森的逻辑

本文以上代码放在 github 和 gitee 上,可以使用如下命令行拉取代码。我整个代码仓库比较庞大,使用以下命令行可以进行部分拉取,拉取速度比较快

先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码

git init
git remote add origin https://gitee.com/lindexi/lindexi_gd.git
git pull origin f005404efbf000f19880fad4f03cc2c6c242e967

以上使用的是国内的 gitee 的源,如果 gitee 不能访问,请替换为 github 的源。请在命令行继续输入以下代码,将 gitee 源换成 github 源进行拉取代码。如果依然拉取不到代码,可以发邮件向我要代码

git remote remove origin
git remote add origin https://github.com/lindexi/lindexi_gd.git
git pull origin f005404efbf000f19880fad4f03cc2c6c242e967

获取代码之后,进入 Workbench/KerewaykeehabalheaHebalhereda 文件夹,即可获取到源代码

更多基础语法请看 https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/statements/iteration-statements

更多技术博客,请参阅 博客导航

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

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

相关文章

dotnet C# 使用 SHFileOperation 调用 Win32 的文件复制对话框

本文将和大家介绍如何在 dotnet C# 里面使用 SHFileOperation 调用 Windows 自带的文件复制对话框进行文件复制本文核心代码拷贝自 C#中使用SHFileOperation调用Windows的复制文件对话框 - 季风哥 - 博客园 文章,特别感谢大佬提供的方法 实现的效果图如下详细实现逻辑还请大家…

Avalonia 11.1 已知问题 应用启动时 PointToScreen 无法获取正确坐标

本文记录 Avalonia 11.1 版本的已知问题,在 Linux 上使用 X11 时,在应用启动时,即使在 Loaded 或 Activated 事件里,都无法使用 PointToScreen 获取到正确的屏幕坐标,只会将传入的点作为返回值此问题已经报告给 Avalonia 官方,请看 https://github.com/AvaloniaUI/Avalon…

乌龟对对碰开局应该抽几只?

结论:30只以上为佳,3的倍数 https://www.bilibili.com/video/BV17nYVekEWU/?vd_source=9b97428fe30142d2bb4f9bab6ef082a4# Import necessary libraries import numpy as np import random from collections import defaultdict import matplotlib.pyplot as plt# Function …

写一个cpp uos系统

#include <iostream>int main() {std::cout << "Hello, UOS!" << std::endl;return 0; }创建一个test.cpp文件, 在当前目录打开终端, 把上面代码内容写里面, 输入g++ test.cpp, 生成了一个a.out文件, ./a.out 输出 Hello, UOS!

C#项目—彩票选号

C#彩票选号软件 今天做了一个彩票选号的小软件,将学到的知识点总结如下; 1.写程序的思路实体类(属性、方法) 主程序调用类方法2.学到的知识点判断、循环 文件的操作(保存、打开) 集合、数组(增加-AddRange、删除-RemoveAt、排序-Reverse) 关键字:Random(随机数-Next)…

C#学习——彩票选号软件

C#彩票选号软件 今天做了一个彩票选号的小软件,将学到的知识点总结如下; 1.写程序的思路实体类(属性、方法) 主程序调用类方法2.学到的知识点判断、循环 文件的操作(保存、打开) 集合、数组(增加-AddRange、删除-RemoveAt、排序-Reverse) 关键字:Random(随机数-Next)…

探究grid_sample函数

一、函数介绍torch.nn.functional.grid_sample(input, grid, mode=bilinear, padding_mode=zeros, align_corners=None)对于4D输入,input维度为 \((N,C,H_{in},W_{in})\), grid维度为 \((N,H_{out},W_{out},2)\) ,则output维度为 \((N,C,H_{out},W_{out})\)对于5D输入,input…

036.CI4框架CodeIgniter,VUE+CI4互通,VUE通过伪静态地址访问,内容为调用的CI4的API

CI4和VUE前端代码,可以看我在https://www.cnblogs.com/tianpan2019写的前2篇运行CI4能正常打开 使用npm run dev 也可以正常打开VUE 根据https://www.cnblogs.com/tianpan2019前1篇把根目录设置成CI4的publi目录 把伪静态内容也写上,内容如下:location / { if (!-e $reques…

2024年1000个计算机毕业设计项目源码(源码+论文【万字】)

【计算机毕设项目】2025级100个热门项目推荐 (前后端Web项目) 以下项目选题适合计算机专业大部分专业,技术栈主要为:Java语言,SpringBoot+Vue框架,MySQL数据库以下项目选题适合计算机专业大部分专业,技术栈主要为:Java语言,SpringBoot+Vue框架,MySQL数据库 ①后台免费获…

035.CI4框架CodeIgniter,安装前端VUE并执行

安装node22.5 选择路径 安装完成 装好后使用cmd查看node -v和 npm -v,看一下就知道有没有装好了 nodejs的安装目录,需要完全授权才可以,不然后面会报错 在网站的根目录,打开Powershell 显示权限不足的错误 管理员模式打开系统的Powershell 输入set-ExecutionPolicy RemoteS…

7月编程心得

7 月份非常忙碌,想系统性的写一篇文章,好几次不知道如何下手,后来想想还不如顺其自然,写一点自己的学习心得体会。 这篇文章,聊聊 7月份笔者的编程心得 ,希望对大家有所帮助。 1 IntelliJ IDEA 社区版 工欲善其事,必先利其器。 笔者的 Mac 电脑安装了 IntelliJ IDEA Ult…

三分钟对可视化表单设计器开源优点做简单介绍

为了帮助大家了解可视化表单设计器开源的多个优势特点,本文将为大家做一个系统介绍。想要实现流程化办公,需要了解低代码技术平台、可视化表单设计器开源在现代化办公中的作用和价值。为了帮助大家了解可视化表单设计器开源的多个优势特点,本文将为大家做一个系统介绍。 要了…