我以为在两个空列表上调用Equals()会返回true,但事实并非如此.有人能解释为什么吗?
var lst = new List<Whatever>();
var lst2 = new List<Whatever>();
if(!lst.Equals(lst2))
throw new Exception("seriously?"); // always thrown
Run Code Online (Sandbox Code Playgroud) 阿罗哈,
这是一个覆盖GetHashCode的简单类:
class OverridesGetHashCode
{
public string Text { get; set; }
public override int GetHashCode()
{
return (Text != null ? Text.GetHashCode() : 0);
}
// overriding Equals() doesn't change anything, so I'll leave it out for brevity
}
Run Code Online (Sandbox Code Playgroud)
当我创建该类的实例时,将其添加到HashSet然后更改其Text属性,如下所示:
var hashset = new HashSet<OverridesGetHashCode>();
var oghc = new OverridesGetHashCode { Text = "1" };
hashset.Add(oghc);
oghc.Text = "2";
Run Code Online (Sandbox Code Playgroud)
那么这不起作用:
var removedCount = hashset.RemoveWhere(c => ReferenceEquals(c, oghc));
// fails, nothing is removed
Assert.IsTrue(removedCount == 1);
Run Code Online (Sandbox Code Playgroud)
这两个都没有:
// this line …Run Code Online (Sandbox Code Playgroud) 使用新的Stream API进行简单迭代有什么好处吗?
没有Stream API:
for (Map.Entry<String, String> entry : map.entrySet()) {
doSomething(entry);
}
Run Code Online (Sandbox Code Playgroud)
使用Stream API:
map.entrySet().stream().forEach((entry) -> {
doSomething(entry);
});
Run Code Online (Sandbox Code Playgroud)
代码的长度和可读性大致相同.是否有任何重要差异(例如性能)?
我正在尝试修改 Xtext 域模型示例,以便实体属性可以有另外两个属性(除了示例中已包含的“许多”属性之外)。所有属性都必须是可选的,并且它们的顺序无关紧要。看来,无论我做什么,第一个属性都必须是第一个列出的属性。因此,例如,如果我在 xtext 中有这个:
(many ?= 'many')? & (aBool ?= 'isBool')? & (anEnum = EnumType)?
Run Code Online (Sandbox Code Playgroud)
如果我使用“many”,那么它必须是第一个属性,否则我会收到错误消息。如果我完全忽略它,我就不会出错。
那么,我如何告诉 xtext 我想要一个无序组中的三个可选属性?
当我存储这个类时:
class MyClass{
...
public Type SomeType {get;set;}
...
}
Run Code Online (Sandbox Code Playgroud)
SomeType属性像这样序列化:
"SomeType" : {
"_t" : "RuntimeType"
}
Run Code Online (Sandbox Code Playgroud)
并且每个后续查询都失败.
我正在使用官方的C#驱动程序.如何让它存储实际类型?谢谢.