gpt4 book ai didi

c# - 将java代码转换为c#代码

转载 作者:太空宇宙 更新时间:2023-11-03 20:03:34 24 4
gpt4 key购买 nike

我正在阅读“Head First Object Oriented Design and Analysis”,但卡在了第 254 页。

在下面的 Java 代码中,我试图将“Matches”方法转换为 C# 方法。

public class InstrumentSpec {

private Map properties;

public InstrumentSpec(Map properties) {
if (properties == null) {
this.properties = new HashMap();
} else {
this.properties = new HashMap(properties);
}
}

public Object getProperty(String propertyName) {
return properties.get(propertyName);
}

public Map getProperties() {
return properties;
}

public boolean matches(InstrumentSpec otherSpec) {
for (Iterator i = otherSpec.getProperties().keySet().iterator();
i.hasNext(); ) {
String propertyName = (String)i.next();
if (!properties.get(propertyName).equals(
otherSpec.getProperty(propertyName))) {
return false;
}
}
return true;
}
}

这是我目前拥有的 C# 代码:

public class InstrumentSpec
{
private IDictionary _properties;

public InstrumentSpec(IDictionary properties)
{
this._properties = properties == null ? new Hashtable() : new Hashtable(properties);
}

public object GetProperty(string propertyName)
{
return _properties.Contains(propertyName);
}

public IDictionary Properties
{
get { return _properties; }
set { _properties = value; }
}

public virtual bool Matches(InstrumentSpec otherSpec)
{
foreach (var prop in otherSpec.Properties)
{
if (!prop.Equals(otherSpec.Properties))
{
return false;

}
}
return true;
}
}

有人知道如何使 Matching 方法工作,以便它检查两个对象是否匹配吗?

最佳答案

Java 代码遍历字典键并比较各自的属性值。您当前正在遍历键/值对并将它们与字典进行比较。

我猜是这样的

foreach (var key in otherSpec.Properties.Keys)
{
if (!Properties[key].Equals(otherSpec.Properties[key]))
{
return false;
}
}
return true;

会是一个更好的翻译。

关于c# - 将java代码转换为c#代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25605097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com