问题描述:Function1函数功能是为一个HashTable类型的对象赋值,Function2函数的参数为被赋值的那个HashTable;
方法1:(定义一个全局HashTable变量,然后Function1函数为其赋值,每次赋值前先清空,Function2函数参数为全局变量) HashTable1;//全局变量
while()
{
HashTable1.Clear();//清空
void Function1()
{
HashTable1 = **; //对HashTable1进行操作
}
Fuction2(HashTable1);//传入参数为全局变量
}
方法2:(在Function1函数内每次都new一个HashTable对象出来,然后为其赋值。Function2函数参数为Function1函数)
while()
{
HashTable1 Function1()
{
HashTable1 = new HashTable(); //new一个新的HashTable
HashTable1 = **; //对HashTable1进行操作
return HashTable1
}
Fuction2(Function1());//传入参数为函数
}请问这两种做法在循环次数较多时,那个比较好?还有就是VS.net中哪里能监控到程序运行的时间?谢谢。
方法1:(定义一个全局HashTable变量,然后Function1函数为其赋值,每次赋值前先清空,Function2函数参数为全局变量) HashTable1;//全局变量
while()
{
HashTable1.Clear();//清空
void Function1()
{
HashTable1 = **; //对HashTable1进行操作
}
Fuction2(HashTable1);//传入参数为全局变量
}
方法2:(在Function1函数内每次都new一个HashTable对象出来,然后为其赋值。Function2函数参数为Function1函数)
while()
{
HashTable1 Function1()
{
HashTable1 = new HashTable(); //new一个新的HashTable
HashTable1 = **; //对HashTable1进行操作
return HashTable1
}
Fuction2(Function1());//传入参数为函数
}请问这两种做法在循环次数较多时,那个比较好?还有就是VS.net中哪里能监控到程序运行的时间?谢谢。
2.HashTable效率不如Dictionary<T>高...
1,C#是面向对象的,这无可厚非。不过一个函数是一个对象,一个类也是一个对象,在一个类文件中,在外部声明的变量,在函数体中使用,相比较于函数体内部变量,我觉得称为全局变量也没有什么不可以的。当然这里的所谓全局变量是局限性的。2,关于HashTable,MSDN解释如下:
Hashtable 对象由包含集合元素的存储桶组成。存储桶是 Hashtable 中各元素的虚拟子组,与大多数集合中进行的搜索和检索相比,存储桶可令搜索和检索更为便捷。每一存储桶都与一个哈希代码关联,该哈希代码是使用哈希函数生成的并基于该元素的键。哈希函数是基于键返回数值哈希代码的算法。键是正被存储的对象的某一属性的值。哈希函数必须始终为相同的键返回相同的哈希代码。一个哈希函数能够为两个不同的键生成相同的哈希代码,但从哈希表检索元素时,为每一唯一键生成唯一哈希代码的哈希函数将令性能更佳。在 Hashtable 中用作元素的每一对象必须能够使用 GetHashCode 方法的实现为其自身生成哈希代码。但是,还可以通过使用接受 IHashCodeProvider 实现作为参数之一的 Hashtable 构造函数,为 Hashtable 中的所有元素指定一个哈希函数。在将一个对象添加到 Hashtable 时,它被存储在存储桶中,该存储桶与匹配该对象的哈希代码的哈希代码关联。在 Hashtable 内搜索一个值时,将为该值生成哈希代码,并且搜索与该哈希代码关联的存储桶。例如,一个字符串的哈希函数可以采用该字符串中每一字符的 ASCII 代码并它们添加到一起来生成一个哈希代码。字符串“picnic”将具有与字符串“basket”的哈希代码不同的哈希代码;因此,字符串“picnic”和“basket”将处于不同的存储桶中。与之相比,“stressed”和“desserts”将具有相同的哈希代码并将处于相同的存储桶中。Dictionary 类与 Hashtable 类的功能相同。对于值类型,特定类型(不包括 Object)的 Dictionary 的性能优于 Hashtable,这是因为 Hashtable 的元素属于 Object 类型,所以在存储或检索值类型时通常发生装箱和取消装箱操作。所以个人觉得,单纯看效率而不考虑吻合度,有点吹毛求疵了。
-----------
这段话说出去会被人笑话...好好去学学OOP吧...单纯看效率而不考虑吻合度
-----------
吻合度?这又是什么概念?泛型是吹毛求疵?效率只是很小的一方面...强类型带来的好处不是一点半点...好好去学学泛型吧...
知之为知之不知为不知...不要害别人...