ASP.NET Razor C# 循环和数组(超详细)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观

前言:ASP.NET Razor C# 中的循环与数组基础

在 ASP.NET Web 开发中,循环和数组是构建动态页面的两大核心工具。无论是展示用户列表、渲染商品信息,还是处理后台数据,开发者都需要通过循环遍历数据集,并借助数组高效管理数据结构。本文将从零开始讲解 ASP.NET Razor C# 环境下循环与数组的实现方法,结合实际案例与比喻,帮助读者快速掌握这一技能。


一、循环的类型与使用场景

1.1 基础概念:循环是什么?

循环是编程中重复执行代码块的机制,就像服务员在餐厅重复“取餐-上菜-清理”动作一样,循环可以让开发者高效处理重复性任务。在 C# 中,常见的循环类型包括 forforeachwhile

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# 中循环与数组的核心用法。掌握这些知识后,开发者可进一步探索以下方向:

  1. 多维数组与交错数组的高级应用;
  2. LINQ 的深度使用;
  3. 异步循环在高并发场景中的优化;
  4. Razor PagesASP.NET Core 的最新特性。

通过实践案例与理论结合,读者不仅能提升代码效率,更能为构建复杂 Web 应用打下坚实基础。

最新发布