小编jro*_*jro的帖子

Hashtable对象仍然有用吗?

System.Collections.Hashtable对象是否已过时?

随着C#v2和v3中泛型的实现和改进,我发现Hashtable比通用词典更合适已经有很长一段时间了.从字面上看,我不记得上次我使用Hashtable了.

只是想知道是否有其他人发现Hashtable仍然适合或优先用于实现的情况和该决定的基础 - 易用性,性能,集合大小,对象类型等.

更新:意味着将此问题限制为C#.

c# collections

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

protobuf-net,版本控制和代理类型的最佳实践

我正在尝试使用protobuf-net(Marc Gravell的实现)来确定如何解决这个用例.

  • 我们有A类,它被认为是版本1
  • A类的实例已序列化为磁盘
  • 我们现在有了B类,它被认为是A类的第2版(A类有很多错误,我们必须为下一个版本创建B类).A类仍然存在于代码中,但仅用于传统目的.
  • 我想将版本:1数据(存储到磁盘)反序列化为B类实例,并使用逻辑例程将数据从先前的A类实例转换为B类的新实例.
  • B类实例将在操作期间序列化为磁盘.
  • 应用程序应该期望反序列化A类和B类的实例.

数据契约代理的概念和DataContractSerializer浮现在脑海中.目标是将版本:1数据转换为新的B类结构.

一个例子:

[DataContract]
public class A {

     public A(){}

     [DataMember]
     public bool IsActive {get;set;]

     [DataMember]
     public int VersionNumber {
          get { return 1; }
          set { }
     }

     [DataMember]
     public int TimeInSeconds {get;set;}

     [DataMember]
     public string Name {get;set;}

     [DataMember]
     public CustomObject CustomObj {get;set;} //Also a DataContract

     [DataMember]
     public List<ComplexThing> ComplexThings {get;set;} //Also a DataContract
     ...
}

[DataContract]
public class B {

     public B(A a) {
          this.Enabled = a.IsActive; //Property now has a …
Run Code Online (Sandbox Code Playgroud)

c# versioning protobuf-net

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

高效的字符串匹配算法

我正在尝试构建一个有效的字符串匹配算法.这将在高容量环境中执行,因此性能至关重要.

这是我的要求:

  • 给定域名,即www.example.com,确定它是否与条目列表中的"匹配".
  • 参赛作品可以是绝对匹配,即www.example.com.
  • 参赛作品可能包含通配符,即*.example.com.
  • 通配符条目从最定义的级别开始匹配.例如,*.example.com将匹配www.example.com,example.com和sub.www.example.com.
  • 未嵌入通配符条目,即sub.*.example.com将不是条目.

语言/环境:C#(.Net Framework 3.5)

我已经考虑将条目(和域查找)拆分成数组,颠倒顺序,然后迭代数组.虽然准确,但感觉很慢.

我考虑过正则表达式,但我担心将条目列表准确地表示为正则表达式.

我的问题:根据上面列出的描述,找到一个字符串形式的字符串是否匹配字符串列表中的任何一个字符串的有效方法是什么?

c# algorithm

4
推荐指数
3
解决办法
4979
查看次数

加载了表示我的JS脚本的最佳方式

我有一个JS脚本将托管在我的服务器上,其他人将嵌入他们的html,即

...<code for http://yoursite.com />
<script type="text/javascript" src="http://mysite.com/awesome.js" />
...<code for http://yoursite.com />
Run Code Online (Sandbox Code Playgroud)

我的脚本声明了一个对象,其中包含一组可用作javascript Object()的属性,即

<script type="text/javascript">
//From http://mysite.com/awesome.js
alert(Awesome.Name);
</script>
Run Code Online (Sandbox Code Playgroud)

由于加载时间的变化,似乎我需要发信号通知我的脚本中的"Awesome"对象已准备就绪.我需要它自己站立,因此不依赖于特定的JS框架.

我是否需要发布自己的自定义JS事件,或者我的脚本加载的简单事实是否被现有的页面级事件之一捕获?我该怎么做呢?

更新:作为参考点,如果我将JS包含在从" http://mysite.com " 运行的HTML页面中,则可以使用并填充Awesome对象.当JS文件包含在另一个域中时,该对象在运行时未定义.

javascript unobtrusive-javascript javascript-events

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