gpt4 book ai didi

c# - 在泛型类型的构造函数中使用 C# params 关键字

转载 作者:太空狗 更新时间:2023-10-29 18:08:03 25 4
gpt4 key购买 nike

我在 C# 中有一个带有 2 个构造函数的泛型类:

public Houses(params T[] InitialiseElements)
{}
public Houses(int Num, T DefaultValue)
{}

使用 int 作为泛型类型构造一个对象并将两个 int 作为参数传递会导致调用“不正确”的构造函数(从我的角度来看)。

例如Houses<int> houses = new Houses<int>(1,2) - 调用第二个构造函数。将任何其他数量的整数传入构造函数将调用第一个构造函数。

除了删除 params 关键字并强制用户在使用第一个构造函数时传递一个 T 数组之外,还有什么办法可以解决这个问题吗?

最佳答案

一个更清晰的解决方案是拥有两个静态工厂方法。如果将它们放入非泛型类中,您还可以从类型推断中获益:

public static class Houses
{
public static Houses<T> CreateFromElements<T>(params T[] initialElements)
{
return new Houses<T>(initialElements);
}

public Houses<T> CreateFromDefault<T>(int count, T defaultValue)
{
return new Houses<T>(count, defaultValue);
}
}

调用示例:

Houses<string> x = Houses.CreateFromDefault(10, "hi");
Houses<int> y = Houses.CreateFromElements(20, 30, 40);

那么你的通用类型的构造函数就不需要“params”位了,就不会出现混淆。

关于c# - 在泛型类型的构造函数中使用 C# params 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/213333/

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