You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Python生成器转换为C#?验证给出的LINQ实现代码是否正确

问题分析与代码修正

你的代码存在几处问题,同时没有完全贴合“生成器形式”的要求,具体说明和修正方案如下:

1. 拼写错误

Console.Writeline方法名拼写错误,正确写法是Console.WriteLine(第二个字母W需要大写)。

2. 数组输出问题

直接打印数组对象只会输出其类型标识(比如System.Int32[]),无法展示数组内的元素。要输出元素内容,需要用string.Join拼接成可读字符串:

Console.WriteLine(string.Join(", ", y));

3. 生成器形式的正确实现

你当前调用了.ToArray(),会立即遍历序列并生成数组,这和Python的列表推导式行为一致,但并非**生成器(延迟执行)**形式。C#中对应Python生成器的是IEnumerable<int>,无需调用.ToArray(),序列会在迭代时才逐个计算元素:

int[] x = new int[] {5, 9, 0, 7, 2};
// 生成器形式:延迟执行,返回IEnumerable<int>
var y = from i in x where i % 2 == 0 select i * i;

// 迭代生成器获取元素并输出
foreach (var num in y)
{
    Console.Write(num + " ");
}
// 或用string.Join一次性输出所有元素
Console.WriteLine(string.Join(", ", y));

如果你的需求是立即生成数组(等价于Python的列表推导式),核心逻辑是对的,但要修正拼写和输出方式:

int[] x = new int[] {5, 9, 0, 7, 2};
var y = (from i in x where i%2 == 0 select i*i).ToArray();
Console.WriteLine(string.Join(", ", y)); // 输出:0, 4

内容的提问来源于stack exchange,提问作者Red Mermaid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 02:01:26