我想要一个通用类来实现 IEquatable<T> 接口。该类具有 T 类型的数据项。为了使泛型类可等同,数据项也必须是这样的。
这是我的通用类:
public class V<T> : IEquatable<V<T>> where T : IEquatable<T>
{
public V(T[] Value)
{
this.Value = Value;
}
T[] Value { get; set; }
public bool Equals(V<T> other)
{
if (Value.Count() != other.Value.Count()) return false;
for (int i = 0; (i < Value.Count()) && i < other.Value.Count(); i++)
{
if (!Value[i].Equals(other.Value[i])) return false;
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
问题就在这里。当我编译上面的泛型类时,我收到以下消息。
“Myspace.Generic.V`1[T]”上的 GenericArguments[0]、“T”违反了类型参数“T”的约束。
我的推理哪里出错了,或者我的泛型类出了什么问题?
注意:当我省略IEquatable<V<T>>泛型类和完整的代码public bool Equals(V<T> other)时,泛型类将编译并可用。除了编译器检测 IEquitable 之外。
public class …Run Code Online (Sandbox Code Playgroud) 我试图在我的C++/CLI代码中声明以下内容.
public ref class MyClass
{
public:
const String ^MyLuckyNumber = "One";
Run Code Online (Sandbox Code Playgroud)
它在编译阶段失败了.但在C#中,以下是有效的.
public class MyClass
{
public const string NowMyLuckyNumber = "Two";
Run Code Online (Sandbox Code Playgroud)
如何在C++/CLI中声明'const String ^'?我试着谷歌但没有运气!
我喜欢使用 vim(在 ms windows 上),我想每个人都有一个最喜欢的编辑器,这是我的。
在一台特定的 PC 上,我遇到了有关该mark[a-zA-Z]命令的问题。它不适用于字母 a 和 A,但适用于 bz 和 BZ,我想知道为什么。
如果我使用该命令,:marks我可以看到它ma并mA设置一个条目。但'a并'A没有什么作用。反引号版本也是如此。如果我对标签 b 或 B 做同样的事情,它就会起作用。
我检查了 _vimrc,但没有一行对 a 或 A 执行某些操作。
什么可以屏蔽标签a和A?我如何找出导致此问题的原因?
欢迎任何建议。
其他信息:2016 年 3 月 5 日 23:59
我没有 _gvimrc 文件并使用“标准”_vimrc 文件,从未花时间深入研究 vim 配置。所以它仍然很香草。我喜欢这种方式,我必须使用太多的 PC,并且同步 _vimrc 文件不是我想要的。:-)
这是在我的 _vimrc 文件中。
:source C:\Program Files (x86)\Vim\_vimrc
let g:xml_syntax_folding=1
:filetype on
:filetype plugin on
:set foldmethod=marker
:set foldmarker={,}
autocmd FileType xml source C:\Users\andre\vimfiles\ftplugin\xml.vim
autocmd FileType …Run Code Online (Sandbox Code Playgroud)