ASP.NET Razor C# 循环和数组(超详细)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;演示链接: http://116.62.199.48:7070 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观
前言:ASP.NET Razor C# 中的循环与数组基础
在 ASP.NET Web 开发中,循环和数组是构建动态页面的两大核心工具。无论是展示用户列表、渲染商品信息,还是处理后台数据,开发者都需要通过循环遍历数据集,并借助数组高效管理数据结构。本文将从零开始讲解 ASP.NET Razor C# 环境下循环与数组的实现方法,结合实际案例与比喻,帮助读者快速掌握这一技能。
一、循环的类型与使用场景
1.1 基础概念:循环是什么?
循环是编程中重复执行代码块的机制,就像服务员在餐厅重复“取餐-上菜-清理”动作一样,循环可以让开发者高效处理重复性任务。在 C# 中,常见的循环类型包括 for
、foreach
和 while
。
1.2 for
循环:精确控制循环次数
for
循环适合已知循环次数的场景。例如,遍历一个已知长度的数组:
for (int i = 0; i < 5; i++)
{
Console.WriteLine($"当前索引:{i}");
}
比喻:这就像服务员按餐桌号(索引)依次上菜,从 0 到 4 号桌,每桌都执行相同操作。
1.3 foreach
循环:简化集合遍历
当数据以集合形式存在时(如数组、列表),foreach
更简洁:
string[] fruits = { "苹果", "香蕉", "橘子" };
foreach (string fruit in fruits)
{
Console.WriteLine($"当前水果:{fruit}");
}
比喻:这如同服务员直接拿起盘子(集合元素)逐个上菜,无需关注具体桌号。
1.4 while
循环:动态条件控制
while
在循环条件未知时使用,例如等待用户输入:
int input;
while (true)
{
Console.WriteLine("请输入数字(输入 0 退出):");
input = int.Parse(Console.ReadLine());
if (input == 0) break;
Console.WriteLine($"您输入的数字是:{input}");
}
注意:必须确保循环条件最终会变为 false
,否则可能导致无限循环。
二、数组:数据存储的“书架”
2.1 数组的定义与初始化
数组是存储同类型数据的容器,类似书架上的书籍按顺序排列。声明数组的语法如下:
// 声明并初始化整型数组
int[] numbers = new int[3] { 10, 20, 30 };
// 简化写法(C# 3.0+)
string[] colors = { "红", "绿", "蓝" };
2.2 访问与修改数组元素
通过索引访问元素,索引从 0 开始:
Console.WriteLine(numbers[0]); // 输出 10
numbers[1] = 25; // 修改第二个元素
比喻:就像在书架上取下第 0 本书阅读,或替换第 1 本书的内容。
2.3 数组的多维与交错数组
多维数组适合存储表格数据,例如学生成绩表:
int[,] scores = new int[2, 3]
{
{ 90, 85, 95 },
{ 88, 92, 89 }
};
Console.WriteLine(scores[1, 2]); // 输出 89
注意:多维数组的索引顺序是行优先,即 [行号, 列号]
。
三、在 ASP.NET Razor 视图中使用循环与数组
3.1 Razor 视图基础
ASP.NET Razor 视图通过 .cshtml
文件渲染动态内容。开发者可在代码块(@{ ... }
)中编写 C# 逻辑,并通过 @
输出结果。
3.2 在 Razor 中遍历数组
假设有一个产品列表数组:
@{
var products = new[]
{
new { Id = 1, Name = "笔记本", Price = 899 },
new { Id = 2, Name = "键盘", Price = 199 }
};
}
<ul>
@foreach (var product in products)
{
<li>@product.Name - ¥@product.Price</li>
}
</ul>
输出:
- 笔记本 - ¥899
- 键盘 - ¥199
3.3 结合模型传递数据
在控制器中定义模型类:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
控制器传递数据到视图:
public IActionResult Index()
{
var products = new List<Product>
{
new Product { Id = 1, Name = "手机", Price = 2999 },
new Product { Id = 2, Name = "耳机", Price = 399 }
};
return View(products);
}
视图中接收并遍历:
@model List<Product>
<table>
<tr>
<th>名称</th>
<th>价格</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.Name</td>
<td>@item.Price</td>
</tr>
}
</table>
四、进阶技巧与常见问题
4.1 数组长度与安全性
获取数组长度:int count = numbers.Length
。
注意:索引越界会引发 IndexOutOfRangeException
,需通过条件判断或 TryGetValue
避免。
4.2 使用 LINQ 简化操作
LINQ(Language Integrated Query)可结合循环与数组实现复杂查询:
var filteredProducts = products.Where(p => p.Price > 500);
4.3 性能优化建议
- 对于频繁增删操作,优先使用
List<T>
而非数组。 - 避免在循环中执行高开销操作(如数据库查询),可改用批量处理。
五、总结与扩展方向
本文通过循环类型、数组基础及 Razor 视图案例,系统讲解了 ASP.NET C# 中循环与数组的核心用法。掌握这些知识后,开发者可进一步探索以下方向:
- 多维数组与交错数组的高级应用;
- LINQ 的深度使用;
- 异步循环在高并发场景中的优化;
- Razor Pages 与 ASP.NET Core 的最新特性。
通过实践案例与理论结合,读者不仅能提升代码效率,更能为构建复杂 Web 应用打下坚实基础。