小编Vie*_*orm的帖子

为什么两个空列表不相等?

我以为在两个空列表上调用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)

c#

5
推荐指数
2
解决办法
1767
查看次数

HashSet <T> .RemoveWhere()和GetHashCode()

阿罗哈,

这是一个覆盖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)

c#

5
推荐指数
1
解决办法
1734
查看次数

我应该使用Stream API进行简单的迭代吗?

使用新的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)

代码的长度和可读性大致相同.是否有任何重要差异(例如性能)?

java-8 java-stream

5
推荐指数
1
解决办法
447
查看次数

Xtext 可选项目的无序列表

我正在尝试修改 Xtext 域模型示例,以便实体属性可以有另外两个属性(除了示例中已包含的“许多”属性之外)。所有属性都必须是可选的,并且它们的顺序无关紧要。看来,无论我做什么,第一个属性都必须是第一个列出的属性。因此,例如,如果我在 xtext 中有这个:

(many ?= 'many')? & (aBool ?= 'isBool')? & (anEnum = EnumType)?
Run Code Online (Sandbox Code Playgroud)

如果我使用“many”,那么它必须是第一个属性,否则我会收到错误消息。如果我完全忽略它,我就不会出错。

那么,我如何告诉 xtext 我想要一个无序组中的三个可选属性?

xtext

2
推荐指数
1
解决办法
1860
查看次数

使用MongoDb存储System.Type

当我存储这个类时:

class MyClass{
    ...
    public Type SomeType {get;set;} 
    ...
}
Run Code Online (Sandbox Code Playgroud)

SomeType属性像这样序列化:

"SomeType" : {
    "_t" : "RuntimeType"
}
Run Code Online (Sandbox Code Playgroud)

并且每个后续查询都失败.

我正在使用官方的C#驱动程序.如何让它存储实际类型?谢谢.

mongodb mongodb-.net-driver

1
推荐指数
1
解决办法
991
查看次数

标签 统计

c# ×2

java-8 ×1

java-stream ×1

mongodb ×1

mongodb-.net-driver ×1

xtext ×1