gpt4 book ai didi

c# - 字节、短整型和无符号值的 LINQ 聚合函数

转载 作者:太空狗 更新时间:2023-10-29 18:06:12 24 4
gpt4 key购买 nike

您将如何对字节、短整型和无符号值的集合使用 LINQ 聚合函数(例如 Sum、Average)?当然,我是一名新的 C# 程序员,但我什至不知道如何获得可以编译的东西,更不用说有正确的输出了。

这是我正在尝试做的一个简单示例:

short[] numbersArray = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
short sumArray = numbersArray.Sum();

List<short> numbersList = new List<short> { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
short sumList = numbersList.Sum();

我无法使用这些示例中的任何一个。如果我将数据类型更改为 int 它可以工作,但我无法让它工作于 shorts、bytes、uints 等。

我做错了什么?

最佳答案

Enumerable.Sum<T>()仅为 IEnumerable<T> 定义其中 T

double,
double?
int,
int?
decimal,
decimal?
long,
long?
float,
float?

这是因为short没有加法运算符*或任何其他原始类型(例如,short + shortint)。

你必须说:

short[] numbersArray = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
int sumArray = numbersArray.Sum(x => (int)x);

并且不太明确地你可以逃脱

short[] numbersArray = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
int sumArray = numbersArray.Sum(x => x);

在这种情况下,您现在正在调用 overload :

int Enumerable.Sum<short>(
this IEnumerable<short> source,
Func<short, int> selector
)

*:这里我指的是函数意义上的“运算符”F:(short x short) -> short .

关于c# - 字节、短整型和无符号值的 LINQ 聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6334839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com