gpt4 book ai didi

c# - 不能将 int 转换为 T,其中 T 是 bool。有没有办法用 C# 做到这一点?

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

我会尽量快点,因为我已经对这个主题进行了详尽的搜索,而且我只找到与将 bool 转换为 int 相关的主题。

我构建了一个类来处理稀疏矩阵。它们可以由 double、int 或 bool 或任何其他值类型填充。

获取位置 i,j 的一些矩阵元素:

public T getElementValueAt(int i, int j)
{
int ind = this.doesElemExist(i, j);
// returns the element index if it exists, or -1
return (ind == -1 ? (T)(object)0 : this.elem[ind].value );
}

在继续之前,先强调上面的不良做法,以及其他关于稀疏矩阵的做法:

  1. 我一直在搜索并发现 (T)(object)0 不是一个好的做法,但我不明白为什么我不能在这里使用它,因为无论 T 是 int 还是 double 都有效;

  2. 如果我要获取的元素不在列表this.elem中,我应该根据其他元素类型正确返回0。

所以它归结为将一个 int 值(在本例中为 0)转换为某个类型 T,即类型参数。

有什么好的方法吗?对此方法有何评论?

如有任何帮助,我们将不胜感激!

提前致谢!

最佳答案

你的 Actor (T)(object)0如果 T将不会工作是double ...它会抛出 InvalidCastException当它尝试拆箱时 intdouble .

我怀疑你实际上想要的是default(T) , 它给出了任何 T 的默认值是 - 对于引用类型为 null,对于数字类型为零等:

return ind == -1 ? default(T) : this.elem[ind].value;

作为旁注,我鼓励您尝试坚持 .NET 命名约定,包括方法的 PascalCase。

其他三个选项:

  • 使用Nullable<T>正如其他答案中所建议的那样
  • 关注TryXXX返回 boolean 值以指示是否找到元素的方法,并具有 out接收值本身的参数
  • 使用 TryXXX 的修改版本返回 Tuple<bool, T> 的模式而不是使用 out参数

关于c# - 不能将 int 转换为 T,其中 T 是 bool。有没有办法用 C# 做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4565200/

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