一个关于模板方法的问题

火麒噬日 2019-08-19 09:54:01
我想在unity中的模板方法中做比较。

public static T[] DeleteItem<T>(T[] list, T v)
{

int c = list.Length;

for (int i = 0; i < c; i++)
{
if(list[i] == v)
{
T[] list2 = new T[c-1];
for (int j = 0; j < i; j++)
{
list2[j] = list[j];
}
for (int j = i + 1; j < c; j++)
{
list2[j - 1] = list[j];
}
return list2;
}
}
return list;
}



然而上面代码中 if(list[i] == v) 这句是报错的。
error CS0019: Operator `==' cannot be applied to operands of type `T' and `T'

where T:System.Object 不允许。 where T:Unity.Object 可以令等号成立,大于小于号不行。并且System.string不能转Unity.Object

这个有没有什么办法能让模板函数中使用 > == < ?
...全文
195 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
XBodhi. 2019-08-20
  • 打赏
  • 举报
回复
因为没有操作符重载。
XBodhi. 2019-08-20
  • 打赏
  • 举报
回复
类型不确定,所以她无法进行比较的。你可以用 属性里的 GetValue()进行比较。
threenewbee 2019-08-20
  • 打赏
  • 举报
回复
用 object.ReferenceEquals或者Equals或者CompareTo(实现了ICompareable接口)等代替。
或者用表达式树动态调用==

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧