C#泛型如何提高性能的

C#泛型如何提高性能的,第1张

在CLR10中,要创建一个灵活的类或方法,但该类或方法在编译期间不知道使用什么类,就必须以Object类为基础。而Object类在编译期间没有类型安全性。因此必须进行强制类型转换。另外,给值类型使用Object类会有性能损失。

CLR20(Net

35

基于CLR20)提供了泛型。有了泛型,就不需要Objcet类。

SystemCollectionsGeneric命名空间中的List

<T>类不使用对象,而是在使用定义类型。

泛型优点1:性能。

值类型存储在堆栈上,引用类型储存在堆上。

C#类是引用类型,结构是值类型。Net很容易把值类型转换为引用类型。所以可以在需要对象(对象是引用类型)的任意地方使用值类型。

例如:int可以赋予一个对象,从值类型转换为引用类型成为装箱,如果方法需要吧一个对象作为参数,而且传送了一个值类型。装箱 *** 作就会自动进行。另一方面,装箱的值类型可以使用拆箱 *** 作转换为值类型。在拆箱时,需要使用类型转换运算符。

装箱和拆箱 *** 作性能损失比较大。遍历许多项时尤其如此。

SystemCollectionsGenriec名称空间中的List<T>类不使用对象,而是在使用时定义类型。当List<T>的泛型类型定义为int,int类型在JIT编译器动态生成的类中使用,不再进行装箱和拆箱 *** 作

泛型优点2:类型安全

如果在ArrayList类中添加一个整数、一个字符串、一个MyClass类型的对象,如果这个集合使用Foreach语句迭代并转换为Int那么会出现异常。

在泛型类List<T>中,泛型类型T定义了允许使用的类型。有了List<int>的定义。就只能吧整数类型添加到集合中。

泛型优点3:二进制代码的重用。

泛型允许更好地重用二进制代码。泛型类定义一次,用许多不同的类型实例化。

泛型类型可以在一种语言中定义,在另一种Net

语言中使用。

泛型优点4:代码扩展。

字段类型为集合,建议采用泛型,如Set<User> 不采用泛型,如Set也是可以的,赋值与取值时注意类型转换即可。

字段类型为集合,对应数据库的列,最常见的情况就是多对多的关系,如用户、角色,他们之间有个关联表,关联表中有2个字段,都是指向其他表(用户表、角色表)的外键,那么在用户对象就有Set<Role>属性,在角色对象就有Set<User>属性。1对多的情况类似

你这要做的是一个模拟登录,注册,那么首先需要1个静态的容器,也就是存数据的地方,

建议单独建一个类,Data

里边一个静态变量

public static HashMap<String,User> users = new HashMap<String,User>();//Key为用户的名称,不能重复,User为用户对象,里边可以添加你需要模拟的属性

思路:

注册的时候,首先根据用户输入的用户名在users里去找有没有重复的Key,userscontainsKey()这个方法可以做到,如果有则不能用此用户名注册,否则可以继续填写资料,填写按成后,实例化一个User,将这个User的 userName作为key ,User作为value插入users这个map中,

登录的时候也是根据用户名去users中去找key,然后在匹配密码

public int 方法名(需要用到的实体层的类名 名字)

{

连接数据库

定义sqlconnention

定义int 类型的变量

定义sql语句

定义sqlcommand并将sql语句和连接对象传过去

打开连接

执行

变量名=sqlcommandExecuteNoQuary()

关闭连接

return 变量名

}

再在业务逻辑层中调用就可以了

在表示层掉用

既然你暗示就是ArrayList了,

首选就从Arraylist想了

可以试试:

import javautilArrayList;

public class Test{

public static void main(String[]args){

ArrayList<ArrayList<Integer>> als = new ArrayList<ArrayList<Integer>> ();

ArrayList<Integer> a1 = new ArrayList<Integer>();

ArrayList<Integer> a2 = new ArrayList<Integer>();

ArrayList<Integer> a3 = new ArrayList<Integer>();

ArrayList<Integer> a4 = new ArrayList<Integer>();

//下面是添加行,你可以用循环添加固定的行

//每一列就是一个ArrayList<Integer>,你可以任意添加,长度不固定吧

alsadd(a1);

alsadd(a2);

alsadd(a3);

alsadd(a4);

Systemoutprintln(alssize());

}

}

tao_3000的方法可行,只是Integer[]创建时要指定维数

可以自己写个算法自动增加维数

对于你说的数据量问题,个人理解是这样的:

达到了几十万几百万的数据量的时候,我想大概就是从数据库中吧数据读取出来,进行批量的处理或者更新之类的 *** 作。

你说得很对,如此庞大的数据量肯定会使效率降低,

但是我们完全可以一次从数据库中读取几百条记录,进行 *** 作

关于如何从数据库中一次读取很少的记录,jdbc和hibernate都有相应的实现

在者,数据量过大,呵呵,JVM可能崩溃哦 _

以上就是关于C#泛型如何提高性能的全部的内容,包括:C#泛型如何提高性能的、mysql数据库可以设计集合字段吗、java我是初学者,登录,注册两个类,用集合的泛型存注册的数据(姓名,密码),登录的时候怎么做啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9839257.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存