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

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
G
Google Developers Blog
博客园 - 司徒正美
J
Java Code Geeks
aimingoo的专栏
aimingoo的专栏
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
T
The Blog of Author Tim Ferriss
D
Docker
大猫的无限游戏
大猫的无限游戏
D
DataBreaches.Net
腾讯CDC
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
C
Check Point Blog
M
MIT News - Artificial intelligence
Jina AI
Jina AI
I
InfoQ
雷峰网
雷峰网
The Cloudflare Blog
美团技术团队
Engineering at Meta
Engineering at Meta

博客园 - 西门潇洒

MSSQL批量写入数据方案 关于SQL连接 加条件查询的LINQ表达式写法 关于LINQ中实现随机查询数据库中记录 .NET新特性--扩展方法 the Project type is not supported by installation 项目类型不能正确加载 ASP.NET三层架构中数据绑定的问题 ASP.NET 2.0中XML数据的处理 小牛生产小牛的问题解决集粹 <转>自毁前程的七种行为 <转>在 ASP.NET 中执行 URL 重写 正则式中的实用命名组替换 去除socket编程当中接收到的多余符\0 - 西门潇洒 - 博客园 将一段符合XML格式规范字符串插入已有XML文档当中 <转>如何C#中实现在TreeView查找某一节点 javascript正则表达式中使用变量关键字 <转>JavaScript 参考教程之对象化编程 <转>JavaScript 参考教程之JavaScript 简介 <转>JavaScript 参考教程之事件处理 <转>JavaScript 参考教程资料之文档对象
Array中数据强制数据类型转换
西门潇洒 · 2008-06-21 · via 博客园 - 西门潇洒

因为工作需要,有工作中需要大量的把string数组转换成为int数组

我们知道如果需要转换string数组当中的所有数所成为int有一个非常传统的方法
以下是测试demo


string[] strs = new string[] "1""2""3" };
int[] numbers = new int[strs.Length];
for (int i = 0; i < strs.Length; i++)
  {
      numbers[i] 
= Convert.ToInt32(strs[i]);
  }

其实ms在VS当中提供了一个非常实用的方法可以供我们使用直接进行转换的,不过其原理其实也是一样
那就是Array.ConvertAll这个方法
MSDN描述为

public static TOutput[] ConvertAll<TInput, TOutput>(
TInput[] array,
Converter<TInput, TOutput> converter
)

其中参数分别为:TInput 为源数组类型,TOutput为目标数组类型 ,array当然即为源数组,而converter为一个委托
这个所提供的功能即为把数据从一种数据类型转换另一种数据类型的一个方法.

以下是我使用demo

public static int ConvertStrToInt(string source)
{
return Convert.ToInt32(source);

}

string[] strs = new string[] { "1""2""3" };
for (int i = 0; i < strs.Length; i++)
{
    Console.WriteLine(strs[i].GetType().ToString());
}

Converter

<stringint> myConvert = new Converter<stringint>(ConvertStrToInt);
int[] numbers = Array.ConvertAll<string,int>(strs, myConvert);
for (int i = 0; i < numbers.Length; i++)
{
    Console.WriteLine(numbers[i].GetType().ToString());
}

在这里还补充一点
我们知道在建立数组初始化时必须指定其数组容量,否则就会报错
但我们如果确实不确定数组的容量为多少时,应该怎么解决呢,当然,应该ArrayList这类对象当然是可以的
不过就数组这个问题在这里我找到一个方法,也欢迎大家指出.
以下是使用demo

int []arr = new int[0];
        
for (int i = 0; i < GridView1.Rows.Count; i++)
{
    
if (GridView1.Rows[i].RowType == DataControlRowType.DataRow)
    {
       CheckBox cbSelect 
= GridView1.Rows[i].Cells[6].FindControl("cbxSelect"as CheckBox;
                
       
if (cbSelect.Checked)
       {
           
int[] temp = new int[arr.Length + 1];
           Array.Copy(arr, temp, arr.Length);
           temp[arr.Length] 
= Convert.ToInt32(GridView1.DataKeys[i].Value);
           arr 
= temp;
       }
     }
}

在这里说一下我的具体是什么,在一个数据列表当中我需要获取到所有选定了的数据主键值,然而我不知道具体用户选择了几个,所以这个数据的大小无法确定,所以在这里采用一个中间数组的方法进行中继处理,每次发现选中则把用数据容量大1的数组去记录,并且把其值存储下来,最后那个临时数组即为我们想要的值。
当然在效率方面没有考虑,个人不建议使用
朋友们有好的意见一起分享^_^