小编Chr*_*isW的帖子

Object.GetHashCode

我的问题可能会重复Object.GetHashCode()的默认实现,但我再问一次,因为我不理解那个问题的接受答案.

首先,我对上一个问题的接受答案有三个问题,引用了一些文档如下:

"但是,因为在垃圾回收期间回收对象后可以重用此索引,所以可以为两个不同的对象获取相同的哈希码."

这是真的?在我看来,两个对象将不会具有相同的哈希码,因为在对象被垃圾收集(即不再存在)之前,对象的代码不会被重用.

"另外,表示相同值的两个对象只有在完全相同的对象时才具有相同的哈希码."

这是一个问题吗?例如,我想将一些数据与DOM树中的每个节点实例相关联.为此,"节点"必须具有标识或哈希码,以便我可以将它们用作数据字典中的键.是不是一个哈希码来识别它是否是"完全相同的对象",即"引用相等而不是"值相等",我想要什么?

"这个实现对于散列并不是特别有用;因此,派生类应该覆盖GetHashCode"

这是真的?如果它对散列不好,那么如果它有什么好处,为什么它甚至被定义为Object的方法呢?


我的最终(也许对我来说最重要的)问题是,如果我必须发明/覆盖具有"引用相等"语义的任意类型的GetHashCode()实现,则以下是一个合理且良好的实现:

class SomeType
{
  //create a new value for each instance
  static int s_allocated = 0;
  //value associated with this instance
  int m_allocated;
  //more instance data
  ... plus other data members ...
  //constructor
  SomeType()
  {
    allocated = ++s_allocated;
  }
  //override GetHashCode
  public override int GetHashCode()
  {
    return m_allocated;
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑

仅供参考我使用以下代码测试它:

    class TestGetHash
    {
        //default implementation
        class First
        {
            int m_x;
        }
        //my implementation
        class …
Run Code Online (Sandbox Code Playgroud)

.net c# hash gethashcode

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

如何将常量与C#中的接口相关联?

有些语言允许您将常量与接口相关联:

W3C抽象接口也是如此,例如:

// Introduced in DOM Level 2:
interface CSSValue {

  // UnitTypes
  const unsigned short      CSS_INHERIT                    = 0;
  const unsigned short      CSS_PRIMITIVE_VALUE            = 1;
  const unsigned short      CSS_VALUE_LIST                 = 2;
  const unsigned short      CSS_CUSTOM                     = 3;

  attribute DOMString       cssText;
  attribute unsigned short  cssValueType;
};
Run Code Online (Sandbox Code Playgroud)

我想定义这个接口,以便可以从C#调用它.

显然,C#无法定义与接口关联的常量.

  • 将此类接口转换为C#的常用方法是什么?
  • 是否有任何针对DOM接口的"规范"C#绑定?
  • 虽然C#不能,是否有另一种.NET语言可以定义与接口相关的常量?

c# idl c++-cli webidl

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

WPF适用于Line of Business软件吗?

我不知道在这个网站上是否可以提出这类问题,如果不相关,请告诉我道歉.

我目前正在考虑开始将Visual Foxpro中开发的应用程序迁移到VS. 净.我正在研究Windows Forms和WPF,我很清楚它们之间的差异等基础知识.

我的具体问题是,到目前为止,WPF是否是一种活跃且不断发展的技术或其他工具已经死亡并且将来没有支持?

我对这些信息很感兴趣,因为我有一些经验窗口形式; 学习WPF似乎很有意思,但我不会把时间投入到死胡同里.

我感谢你能给我的任何信息.

wpf

17
推荐指数
2
解决办法
7186
查看次数

Winforms treeview,递归检查子节点问题

以下代码直接来自Microsoft,网址http://msdn.microsoft.com/en-us/library/system.windows.forms.treeview.aftercheck%28VS.80%29.aspx.

  // Updates all child tree nodes recursively.
  private void CheckAllChildNodes(TreeNode treeNode, bool nodeChecked)
  {
   foreach (TreeNode node in treeNode.Nodes)
   {
    node.Checked = nodeChecked;
    if (node.Nodes.Count > 0)
    {
     // If the current node has child nodes, call the CheckAllChildsNodes method recursively.
     this.CheckAllChildNodes(node, nodeChecked);
    }
   }
  }

  // NOTE   This code can be added to the BeforeCheck event handler instead of the AfterCheck event.
  // After a tree node's Checked property is changed, all its child …
Run Code Online (Sandbox Code Playgroud)

checkbox treeview winforms

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

3向XML合并算法

我希望能够对XHTML文档进行3向合并:

  1. 从文档的原始副本开始
  2. 一个用户编辑原始文档的副本
  3. 另一个用户编辑原始文档的单独副本
  4. 需要一个工具来合并(自动和/或可视)两个用户所做的更改.

注意:

  • 我想在商业软件中加入这个功能:所以我更喜欢啤酒和/或开源免费的东西,而不是商业工具.
  • 我怀疑这个工具是否支持XML更好,而不是尝试使用类似于diff3实现平面文本三向合并的软件
  • 鉴于所有三个输入文档都是有效的XHTML文档,结果输出文档也应该验证

我发现的工具包括:

  1. "3DM"XML 3路合并和差分工具
  2. Fuego核心XML差异和补丁工具
  3. XmlDiff(最近来自GotDotNet网站已被关闭,但它可能是作为XML Notepad的一个组件而存在)

上面的第一个(即"3DM")明确表示它实现了3向合并.

我不知道另外两个:"diff"后跟"patch"是否相当于3路合并,或者"patch"是否只能将diff重新应用到原始文件(而不是第三个,修改过的文件副本)

您是否可以为此目的推荐一些软件(来自上面列表或其他地方)和/或合并算法的描述?


编辑:匹配,差异和合并XML是2008年的另一篇文章,其中包括对各种算法的简要调查以及对各种实现的参考.


编辑#2:作者确认Fuego Core XML Diff和Patch Tool只能修补原始文件,并且不实现3向合并.

xml diff xhtml merge

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

敏捷文档的具体示例?

在回答项目文件的问题,Chris Ballance回答说"用户故事"和"燃尽图"是开发人员最有用的两种项目文档.

我的问题是,你知道我能看到的这些文件中的任何好例子(例如在互联网上或书中)吗?

如果可能的话,我会很高兴看到很多例子,包括:

  • 小/短/简单的例子
  • 大/长/复杂的例子
  • 着名的例子
  • 高质量的例子

对于Google来说,我并不觉得这是一个简单的话题:我发现很多关于它的文章,但很少有演示文稿显示它.

documentation agile user-stories burndowncharts

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

为什么从CSS Selectors规范中删除了:: selection,它的特异性如何对类型选择器起作用?

有关使用CSS指定所选文本颜色的一些问题:

  1. https://developer.mozilla.org/En/CSS/::selection说,

    ::selection是为CSS3选择器起草的,但是从当前的CSS3草案中删除了.无论如何,它在浏览器中实现并且支持将继续.

    为什么删除它?

  2. 想象一下,浏览器实现的默认CSS中存在以下规则:

    ::selection { background-color: Highlight; color: HighlightText; }
    
    Run Code Online (Sandbox Code Playgroud)

    进一步想象在任何特定于站点的创作样式表中定义如下规则:

    body { background-color: white }
    
    Run Code Online (Sandbox Code Playgroud)

    根据这些规则,所选正文的背景颜色是:它会是white,还是Highlight

    也许作者样式表中的规则应该覆盖默认规则:因为根据特异性,body::selection与后面指定的具体相同(因此应该覆盖前一个条目).

    另一方面,这会导致文本在被选中时不可见(因为如果Highlight是蓝色并且HighlightText是白色的,那么所选文本是白色的蓝色,然后覆盖background-color所选文本,使其为白色将导致其为白色-on白色).

  3. 假设步骤2中的行为是不合需要的,如何避免它?

    • 假设它是用户样式表中的一个错误,如果没有指定,background-color则不应该指定color

    • 假设这body与选定的正文文本不匹配,除非将::selection伪元素指定为选择器的一部分?

css w3c css-selectors css3 pseudo-element

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

使用.NET根据模式验证XML

我想测试(true或false)任意XML文件是否与给定模式匹配.

对于它的价值,架构是Word 2003 WordML架构,Microsoft使用大约7个*.xsd文件的列表定义.

其中一个文件还包括W3C xml.xsd文件,包括以下语句:

<xsd:import id="xml" namespace="http://www.w3.org/XML/1998/namespace"
    schemaLocation="http://www.w3.org/2001/xml.xsd"></xsd:import>
Run Code Online (Sandbox Code Playgroud)

我使用如下的.NET代码进行验证:

   public static void validate(string filename)
    {
       XmlReaderSettings settings = new XmlReaderSettings();
       settings.Schemas.Add(
           "http://schemas.microsoft.com/office/word/2003/wordml",
           //to get this file I downloaded "Office 2003: XML Reference Schemas", i.e. "Office2003XMLSchema.exe" 
           @"C:\Program Files\Microsoft Office 2003 Developer Resources\Microsoft Office 2003 XML Reference Schemas\WordprocessingML Schemas\wordnet.xsd"
           );
        settings.ValidationType = ValidationType.Schema;
        settings.ValidationEventHandler += new ValidationEventHandler(validationEventHandler);
        XmlReader xmlReader = XmlReader.Create(filename, settings);
        while (xmlReader.Read()) { }
   }
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我在未连接到互联网的机器上运行此代码,那么我会收到一个XmlSchemaValidationException无法找到的错误xml.xsd.

为了解决这个问题,我下载了一份xml.xsd,并使用该settings.Schemas.Add方法显式添加:当机器未连接到互联网时,验证现在可以正常工作.

但是,当机器连接到互联网时,我现在得到一个错误说The …

.net xml xsd xml-validation

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

使用CSS float:left和float:right,或者使用CSS margin-left和position:absolute实现这个布局?

我想使用HTML和CSS在主题的左侧放置一些注释(例如,以下模型/图像中显示的'status'和'author'注释):

所需布局的示例

我更喜欢CSS而不是基于表格的布局.

应在标题之前(左侧)显示注释,如上所示.

在HTML,注释应位于相应的标题,例如如下(因为与主题相关的信息/内容通常无论是该主题的标题后):

<h1>This is a section title</h1>
<div class="status">approved</div>
<div class="author">chris</div>
<p>This is some text. Lorem ipsum.</p>
<p>Lorem ipsum.</p>
<h1>Different section title</h1>
<div class="status">rejected</div>
<p>Lorem ipsum.</p>
Run Code Online (Sandbox Code Playgroud)

有(至少)两种可能性:

以下哪个(或任何其他答案)是实现此布局的更好方法,为什么?

html css position css-float

10
推荐指数
3
解决办法
1537
查看次数

为什么“导出类型”需要与“--isolatedModules”一起使用?

我不明白发生了什么,也不明白为什么要在幕后这样做:

\n
    \n
  • 如果Something是一种类型,为什么启用export { SomeThing } from "elsewhere"时会产生错误?--isolatedModules

    \n

    相反,如果是一个值,或者如果未启用,为什么export { SomeThing } from "elsewhere"不是错误?Something--isolatedModules

    \n
  • \n
  • 为什么指定可以export type { SomeThing } from "elsewhere"修复该错误?

    \n
  • \n
\n
\n

(背景资料)

\n

TypeScript有一个新功能

\n
\n

仅类型导入和导出

\n

大多数用户可能永远不需要考虑此功能;\n但是,如果您\xe2\x80\x99在--isolatedModules、TypeScript\xe2\x80\x99s\n transpileModuleAPI 或 Babel 下遇到问题,则此功能可能相关。

\n

TypeScript 3.8 添加了仅类型导入和导出的新语法。

\n
import type { SomeThing } from "./some-module.js";\n\nexport type { SomeThing };\n
Run Code Online (Sandbox Code Playgroud)\n

import type仅导入用于类型\n符号和声明的声明。它总是被完全擦除,因此\n\n\xe2\x80\x99s 在运行时没有任何残留。同样, …

typescript type-only-import-export

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