C# 等效于 C++ std::vector<int>.end()

C# equivalent of C++ std::vector<int>.end()

我试图用 C# 为我的六角球体项目重写在互联网上找到的一些 C++ 代码,但我 运行 变成了以下代码:

if((((*ti)->m_hexA) != tileNdx) && (find(nbrs. begin(), nbrs.end(), ((*ti)->m_hexA)) == nbrs.end()))
{
    nbrs.push_back(((*ti)->m_hexA));
}

我已将其大部分转换为 C#。我什至构建了自己的 Find<T>(List<T> list, T value) 方法,实现了与 std::find.

相同的基本功能

不过,我仍然不确定 std::vector<T>::end() 的文档。文档说它 returns 是一个指向迭代器末尾的 "place holder" 插槽的迭代器,并且尝试访问它会导致 "undefined behaviour"。这样做:

1.) 意思是在我的 C# 中,当处理与 end() 元素进行比较的常规对象时,我应该将该对象与 null?

进行比较

2.) 对于整数和其他原语,我应该只与标记值(例如 -1)进行比较吗?

上述c++源码中,nbrs是一个std::vector,m_hexA是一个int,ti是一个struct。

整体建设:

(find(nbrs. begin(), nbrs.end(), ((*ti)->m_hexA)) == nbrs.end())

可以使用 LinQ 用 C# 编写:

nbrs.FirstOrDefault(i => i == ti.m_hexA) == null

!nbrs.Any(i => i == ti.m_hexA)

其中 ((*ti)->m_hexA) 等价于 ti.m_hexA.