gpt4 book ai didi

c# - 如何初始化泛型局部变量?

转载 作者:太空宇宙 更新时间:2023-11-03 20:13:09 24 4
gpt4 key购买 nike

目标是创建一个简单的程序来计算预处理集的总和。 Sum 必须是通用的,以允许它接受整数和浮点集。

以下代码无法编译。你能告诉我如何解决吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{

static class Program
{
delegate T del<T>(T x);
static T Sum<T>(del<T> df, IEnumerable<T> data)
{
T s = 0;
foreach (var x in data) s += df(x);
return s;
}

static void Main(string[] args)
{
var data = Enumerable.Range(1, 4);
int sum = Sum<int>(x => x * x, data);
Console.WriteLine(sum);
}
}
}

错误消息(粗略地说):

  1. 无法将 int 转换为 T
  2. += 不适用于 T

最佳答案

如果忽略代码的其他问题,您将无法做您想做的事情。 C# 不支持泛型类型的算术运算符。

因此,一种选择是 Sum(del<int>, ..) , Sum(del<float>, ...) ..等

或者,使用 dynamic :

delegate T del<T>(T x);
static T Sum<T>(del<T> df, IEnumerable<T> data)
{
dynamic s = default(T);
foreach (var x in data) s += df(x);
return s;
}

这个结果是30对于您提供的示例。

关于c# - 如何初始化泛型局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18626870/

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