惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
V
Visual Studio Blog
雷峰网
雷峰网
J
Java Code Geeks
博客园 - 三生石上(FineUI控件)
人人都是产品经理
人人都是产品经理
MyScale Blog
MyScale Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
B
Blog RSS Feed
C
Check Point Blog
博客园 - Franky
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
D
Docker
IT之家
IT之家
博客园 - 聂微东
腾讯CDC
U
Unit 42
Microsoft Security Blog
Microsoft Security Blog
The Cloudflare Blog

博客园 - 寒带鱼

协程的原理(Coroutine Theory) SQLite数据库学习小结——Frameworks层实现 SQLite数据库学习小结——native层实现 如何用javascript取出session中的值? - 寒带鱼 - 博客园 连接池泄露了~ Session丢失的解决办法小结 [翻译]编写高性能Web应用程序的10个技巧 [译]30分钟正则表达式指导 操作Word文档的类(VB.NET) MySQL5.0中文手册(13.1. 数据定义声明) ADO.NET对象模型 妹妹生了个女儿,纪念一下 从ASP.NET得到Microsoft Word文档 短期目标 做项目的一点收获之二 2005年中国软件产业最大规模前100家企业名单 关于文件操作的问题 做项目的一点收获之一 数组定义的疑问
返回动态生成的数组的方法
寒带鱼 · 2006-04-29 · via 博客园 - 寒带鱼

今天在写程序时,遇到需要根据数据查询返回的值动态生成数组的方法,.NET中类库中的ArrayList类是可以动态生成数组的类,于是用它写了一个方法大致如下:

public int[] Get(int ID)
            
{
                
using (SqlConnection conn = new SqlConnection(ConnectionStr))
                
{
                    SqlCommand cmd 
= new SqlCommand();
                    cmd.Connection 
= conn;
                    cmd.CommandText 
= "Select * From Table Where ID='"+ID"'";            

                    conn.Open();
                    SqlDataReader rdr 
= cmd.ExecuteReader();

                    
int item;
                    ArrayList result 
= new ArrayList();
                    
while (rdr.Read())
                    
{
                        item 
= rdr.GetInt16(0);
                        result.Add(item);
                    }

            
                    conn.Close();

                    
if (result.Count > 0)
                    
{
                        
int count = result.Count;
                        
int[] arrResult = new int[count];
                
                        
for (int i=0;i<count;i++)
                        
{
                            arrResult[i] 
= (int)result[i];
                        }

                        
return arrResult;
                    }

                }


                
return null;
            }


这样虽然可以完成我想要的功能,但是在把简单数据类型添加到ArrayList中时都需要装箱,而把ArrayList中的数据取出来赋给int[]的数组元素时则需要拆箱,这样频繁的装箱和拆箱操作会不会降低方法的效率,尤其是返回的数据比较多的情况下,不知道是否有更好的方法?