C#如何修改List中的结构体

C# List与 ArrayList用法与区别

问题:

请举例讲下List<>的用法?来个简单的例子。。。。谢谢 比如我用List<int>test =new List<int>(); 那么实例test中的所有方法的类型就是int吗?

答案:

一般的如果要返回一个集合数组会用到他。他增加了代码的可读性,通过他,前台编码的人就可以不费很大力气了解到这个字段什么意思。比如声明了一个Users实体类 public Calss Users { public string Name; public int Age; }这个只是代表一个用户的对象信息,如果你获取的是个用户列表的化,就可以用

List<Users> usersList = new List<Users>;然后向列表里添加每个用户信息 Users users = new Users(); users.Name = "ssss";users.Age = "12"; userList.add(users); 这样循环的向列表里添加信息,然后返回这个列表,在前台页面就可以用循环读出这些信息。

这个是2.0的新特征泛型,用泛型可以解决装箱拆箱问题,List<int>test =new List<int>()这样定义,test这个集合就只能放进了int数据,因此取出的时候不用(inttest[i]显式转换了。

命名空间: using System.Collections; class Program { //做个比较 static void Main(string[] args) { //new对象 Cls a1 = new Cls(); Cls a2 = new Cls(); //存放对象 List<Cls> testfanxing = new List<Cls>(); testfanxing.Add(a1); ArrayList testarray = new ArrayList(); testarray.Add(a2); //取对象 Cls b1 = testfanxing[0]; Cls b2 = testarray[0];//这句报错! 改为:Cls b2 = (Cls)testarray[0];就可正常通过,但是用了类型强制转换 //泛型啥好处? //1。避免了强制类型转换而造成代码可读性差。 //2。既然有了类型强制转换,问题来了:类型强制转换可能会用到装箱和拆箱过程,耗时。 //3。再由于有强制类型转换,在编译的时候可能不会包错,但是运行代码的时候有可能会因为转换失败而出现错误。这就是我们说的非安全代码。 } } class Cls { } 简单来说,泛型就是限制了操作类型。 用微软的话讲: “添加到 ArrayList 中的任何引用或值类型都将隐式地向上强制转换为 Object。如果项是值类型,则必须在将其添加到列表中时进行装箱操作,在检索时进行取消装箱操作。强制转换以及装箱和取消装箱操作都会降低性能;在必须对大型集合进行循环访问的情况下,装箱和取消装箱的影响非常明显。”

另外一个list用法实例:

C#里List的用法 主程序代码: static void Main(string[] args) { ClassList listClass = new ClassList(); Console.WriteLine("请输入第个字符串"); string a = Console.ReadLine(); Console.WriteLine("请输入第二个字符串"); string b = Console.ReadLine();

foreach (string n in listClass.strList(a, b)) { Console.WriteLine(n); }

类: class ClassList { public List<string> strList(string str1,string str2) { string stra = str1 + str2; string strb = str2 + str1; string strc = str1 + str1; List<string> listStr = new List<string>(); listStr.Add(stra); listStr.Add(strb); listStr.Add(strc); return listStr; } }

输出:

ab

ba

aa

关于struct实例

List 类是 ArrayList 类的泛型等效类,某些情况下,用它比用数组和 ArrayList 都方便。

我们假设有一组数据,其中每一项数据都是一个结构。

public struct Item { public int Id; public string DisplayText; } 注意结构是不能给实例字段赋值的,即 public int Id = 1 是错误的。

using System.Collections.Generic;

List<Item> items = new List<Item>();

//添加 Item item1 = new Item(); item1.Id = 0; item1.DisplayText = "水星"; items.Add(item1);

//添加 Item item2 = new Item(); item2.Id = 1; item2.DisplayText = "地球"; items.Add(item2);

//修改 //这里使用的是结构,故不能直接用 items[1].DisplayText = "金星";,如果 Item 是类,则可以直接用。为什么呢?因为结构是按值传递的。 Item item = items[1]; item.DisplayText = "金星"; items[1] = item;

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值