System.Collections.Hashtable对象是否已过时?
随着C#v2和v3中泛型的实现和改进,我发现Hashtable比通用词典更合适已经有很长一段时间了.从字面上看,我不记得上次我使用Hashtable了.
只是想知道是否有其他人发现Hashtable仍然适合或优先用于实现的情况和该决定的基础 - 易用性,性能,集合大小,对象类型等.
更新:意味着将此问题限制为C#.
我正在尝试使用protobuf-net(Marc Gravell的实现)来确定如何解决这个用例.
数据契约代理的概念和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#(.Net Framework 3.5)
我已经考虑将条目(和域查找)拆分成数组,颠倒顺序,然后迭代数组.虽然准确,但感觉很慢.
我考虑过正则表达式,但我担心将条目列表准确地表示为正则表达式.
我的问题:根据上面列出的描述,找到一个字符串形式的字符串是否匹配字符串列表中的任何一个字符串的有效方法是什么?
我有一个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文件包含在另一个域中时,该对象在运行时未定义.