精华内容
参与话题
问答
  • index_img_info.Add(IDM); } 大概的代码是这样,其中 index_img_url_temp和index_img_txt_temp 通过两个foreach分别获取了7个链接和7段文字,调试起来没问题 但是从上面代码里的for循环开始,需求是把 index...
  • C# list.add() list.join()用法

    万次阅读 2016-03-30 09:20:15
    private static void TestList()  {  List list=new List();  list.Add("I");  list.Add("Love");  list.Add("You");  Console.WriteLine(str
    private static void TestList()
            {
                List<string> list=new List<string>();
                list.Add("I");
                list.Add("Love");
                list.Add("You");
                Console.WriteLine(string.Join("-", list));

            }

    string.join是通过一个字符串把list里面的每一项连接起来

    展开全文
  • c#Listadd方法存在的问题

    万次阅读 2017-05-08 11:00:36
    最近码墙时发现了一个很有意思的问题,定义一个引用对象,如果在循环外面定义对象,在循环里list.add(对象),最后的结果却是所有的对象值都是一样的,即每add一次,都会把之前所有的数据覆盖掉,蛮有趣的,在网上...
    最近码墙时发现了一个很有意思的问题,定义一个引用对象,如果在循环外面定义对象,在循环里list.add(对象),最后的结果却是所有的对象值都是一样的,即每add一次,都会把之前所有的数据覆盖掉,蛮有趣的,在网上轻松的搜到了答案,把对象在循环里new就行了,问题虽然解决了,但感觉这里面包含了一些.net底层存储的知识,有关于引用类型和值类型的存储方式问题,写了个demo总结了一下,水平,有大牛发现demo中有不足之处还请指正。
    

      如下面两图:

    图1:在外面定义对象a,调试界面中可以看到,i=4时,之前list中所有对象都被覆盖了

    图2:在循环里定义对象a,不会被覆盖

      又用值类型(int,short之类的)试了一下,在循环外面不会被覆盖,结果就不截图了,实验了以后,用一个大牛总结的一句话来说就是:对于List<T>来说,如果T是引用类型,那保存的是引用,如果是值类型,保存的是值本身!

      但是上面的总结中有个特列:string类型。string在.net中很特殊,.net官方把它归到了引用类型中,但它却和值类型特别相似,具体讲解参考园友停留的风的这篇文章:http://www.cnblogs.com/yank/archive/2011/10/24/2204145.html。

      用string实验结果如下:

    显而易见,string不会覆盖之前的数据,是引用类型中的特列。

      深入的思考了一下覆盖的原因(水平有限,欢迎大家补充),应当如下:

    1.对于引用类型,在循环外new了 a 对象后,这个对象的引用地址就确定了,执行到第二次list.add()时,list[0]中保存的a对象和新加的list[1] a对象是同一个对象,使用的是同一个地址,也就是说在添加list[1]是,list[0]也被修改了,因为它俩指针指向同一个地址,同样,后面添加的都会修改前面所有对象,结果就是list最后所有数据都是最后的list[end_num]。

    2.string也是引用对象,有唯一的引用地址(假设分配的是address1),但当add list[1]的时候(str值改变时),.net会检查内存,发现不等于之前的字符串(list[1]不等于list[0]),.net会给原来的str重新分配内存空间address2,存储list[0],而list[1]使用原来的空间address1。这样使得每次list.add时都不会覆盖之前的元素,因为它们使用的是不同的地址空间。

      这也解释了我之前socket项目中接收数据是用StringBuilder,而不是string,每次改变string时,会消耗一份内存,socket接收中频繁的处理string对象,会消耗大量的内存。

    展开全文
  • 今天在进行开发的时候使用了list集合进行数据的存储,遇到一点小问题,感觉挺有意思的,就上来记录了。话不多说,先贴上代码,再说问题。 public static List<List<List<DDZHCardInfo>>> ...

    今天在进行开发的时候使用了list集合进行数据的存储,遇到一点小问题,感觉挺有意思的,就上来记录了。话不多说,先贴上代码,再说问题。

    public static List<List<List<DDZHCardInfo>>> GetDragonMaxsWaitUnpack(List<List<DDZHCardInfo>> cardsGroupDatas, int dragonLen, int limitValue = 14)
            {
                ArrayEx.SortByCondition(cardsGroupDatas, (cardDataA, cardDataB) =>
                {
                    return cardDataA[0].cardValueSuper - cardDataB[0].cardValueSuper < 0;
                });
    
                var dragonTemp = new List<List<DDZHCardInfo>>();
                //获得手牌符合限制的龙
                var dragonTabStep1 = new List<List<List<DDZHCardInfo>>>();
                for (int i = 0; i < cardsGroupDatas.Count; i++)
                {
                    var cardsGroup = cardsGroupDatas[i];
                    if(dragonTemp.Count == 0 || (cardsGroupDatas[i-1][0].cardValueSuper+1) == cardsGroupDatas[i][0].cardValueSuper)
                    {
                        dragonTemp.Add(cardsGroup);
                    }
                    else
                    {
                        
                        if(dragonTemp.Count >= dragonLen)
                        {
                            dragonTabStep1.Add(dragonTemp);
                        }
                        dragonTemp.Clear();
                        dragonTemp.Add(cardsGroup);
                    }
    
                    if(i == cardsGroupDatas.Count - 1 || cardsGroup[0].cardValueSuper >= limitValue)
                    {
                        if(dragonTemp.Count >= dragonLen)
                        {
                            dragonTabStep1.Add(dragonTemp);
                        }
                        break;
                    }
                }
                return dragonTabStep1;
            }

    这个是为了获取顺子之类的组合。问题出现在下面这个代码

    if(dragonTemp.Count >= dragonLen)
    {
        dragonTabStep1.Add(dragonTemp);
    }
    dragonTemp.Clear();

    当dragonTemp.Clear()之后,dragonTabStep1[0]里面的值也跟着Clear了,断点调试了几次,才发现这个Add有可能是值引用的类型,才造成了这个结果。(没去看C#的底层代码)

    找到原因就好处理了,两种解决方法。

    1.先Copy在添加   dragonTabStep1.Add(ArrayEx.Copy(dragonTemp));

    2.添加完new新地址  dragonTemp = new List<List<DDZHCardInfo>>();

    展开全文
  • C#基础 List Add 添加元素

    千次阅读 2019-05-07 20:34:40
     .NET Framework : 4.7.2        IDE : Visual Studio Community 2019         OS : Windows 10 x64     typesetting : Markdown         blog : blog.csdn.net/...
    • .NET Framework : 4.7.2
    •        IDE : Visual Studio Community 2019
    •         OS : Windows 10 x64
    •     typesetting : Markdown
    •         blog : blog.csdn.net/yushaopu
    •        github : github.com/GratefulHeartCoder

    code

    using System;
    using System.Collections.Generic;
    
    namespace ConsoleApp
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 泛型,只能加入int类型的,或者可以转换成Int类型的数据
                var testList = new List<int>();
                testList.Add(1);
                testList.Add(2);
    
                foreach (var e in testList)
                {
                    Console.WriteLine(e);
                }
                Console.ReadKey();
            }
        }
    }
    
    

    result

    1
    2
    
    

    resource


    感恩曾经帮助过 心少朴 的人。
    C#优秀,值得学习。.NET Core具有跨平台的能力,值得关注。
    Console,WinForm,WPF,ASP.NET,Azure WebJob,WCF,Unity3d,UWP可以适当地了解。
    注:此文是自学笔记所生,质量中下等,故要三思而后行。新手到此,不可照搬,应先研究其理象数,待能变通之时,自然跳出深坑。

    展开全文
  • C# List<>.Add一个细节

    千次阅读 2014-05-11 21:16:39
    代码: List rsdList=new List(6); strs = robotSpeed1.InnerText.Split(';'); foreach (string s in strs) { rsd = new RobotSpeedData(s);
  • foreach (XmlNode info in infos) { string[] item = new string[3]; item[(int)StringType.nick] = info.SelectSingleNode("nick").InnerText; item
  • c# list

    2020-05-15 13:37:32
    List names = new List(); names.Add(“learning hard1”);... // 有了C# 3.0中集合初始化特性之后,就可以简化代码 // 同时下面也使用了隐式类型(使用了var关键字) var newnames = new List<string> { "le
  • C#中使用list Add的问题

    2013-04-18 10:17:00
    namespace ConsoleApplication2{class Program{static void Main(string[] args){List a = new List();record temp = new record();temp.str = "hey";a.Add(temp);temp.str = "hello";a.Add(temp);return;}}class re...
  • 用了c#也一年多了。今天忽然发现对List的内部实现竟然完全理解错了!请看下面两段简单示例: 例1: List<int> list = new List<int>(); int a = 1;... list.Add(a); a = 2; Console.W...
  • C#反射List调用Add方法

    千次阅读 2018-03-14 16:10:01
    调用 Add 方法:一个类实例 gameData 中有一个 List&lt;T&gt;的成员(Field 我就把他叫成员了)//这段可以忽略 就是要获得list这个成员信息 FieldInfoFieldInfo fInfo = gameData.GetType().GetField(ToLow...
  • C#基础 List Add 初始化的两种方法

    千次阅读 2019-05-07 20:33:48
     .NET Framework : 4.7.2        IDE : Visual Studio Community 2019         OS : Windows 10 x64     typesetting : Markdown         blog : blog.csdn.net/...
  • 比如一个类People, People p=new People(); List<People>lists=new List<People>();...lists.Add(p);...这个时候Lists[0]和p指的是同一个对象...listAdd是复制对象副本还是只是一个引用,具体是怎么实现的?
  • 每次程序运行到这里就发生中断异常 surface[N].Simppoint.Add(tp);+ 已引发:“未将对象引用设置到对象的实例。”(System.NullReferenceException) 异常消息 = "未将对象引用设置到对象的实例。", 异常类型 = ...
  • C# List Copy

    2014-12-02 11:34:00
    UserModel 略 List<UserModels> lstUser = new List<UserModels>{...} Coyp:  var lstUserCopy = new List<UserModels>(lstUser.ToArray());... lstUserCoyp.Add(new UserModels{...})...
  • list.Add(new ProcessInf(process.Id, process.ProcessName, process.TotalProcessorTime.TotalMilliseconds, process.WorkingSet64, process.MainModule.FileName)); m++; } catch { } } 为什么这段...
  • Add a Drop Down List into Excel File using C# .NET Anuradha 6:54 AM C# No comments : Here is sample code to add a drop down list into an Excel File using C# .NET. Before ...
  • C# List常用方法

    千次阅读 2019-03-07 20:14:59
    1.list.Add(T t),T为存储类型,将数据 t 存入链表末尾 2.list.AddRange(IEnumerable&lt;T&gt; collection),IEnumerable&lt;T&gt;代表此类型的数组类型(不一定是数组,链表之类的都行,只要实现...
  • C# List 学一下

    2019-11-07 10:03:25
    Add 可以直接添加一个元素 AddRange添加一个集合在尾部 Insert(i,ele)可以插入一个元素 InsertRange(i,list2)插入一个list Count是数量 Contains是是否包含 Remove单个元素 RemoveAt(i)删除index=i的元素 ...
  • C# list to dictionary

    2019-07-11 11:26:00
    示例: 新建一个类: public class Lang { public string En; public string Ch; } 实例化并转为字典: List<Lang> langs = new List<Lang>... langs.Add(new L...
  • C# List泛型集合

    2019-08-06 11:26:03
    List数组特点 List泛型集合是存储单一的类型。 List泛型集合长度是可变的。 ...List方法 ...List众多方法使用和ArrayList集合相似。...创建List泛型集合:List<...添加:list.Add(数据); 添加数组元...
  • C# LIST排序功能

    2014-06-26 17:33:12
    namespace ListSort {  class Program  {  static void Main(string[] args)  {  List listCustomer = new List();  listCustomer.Add(new Customer { name = "客户
  • C#list泛型集合

    2015-05-17 09:36:00
    //创建list泛型集合 List<int> ilist = new List<int>(); ilist.Add(1); ilist.Add(9); ilist.AddRange(new int[] { 234, 23, 12, ...
  • c# list和string

    2012-10-26 15:16:57
    C# List和String互相转换 (2011-06-24 13:53:35) 转载▼ 标签: 杂谈 ...分类: C#学习 ...List转字符串,用逗号隔开 ...List&... list = new ...List&...list.Add("a");list.A...
  • C# List基础用法

    2020-04-20 21:00:49
    目录List常用属性及方法复杂用法 List常用属性及方法 Capacity 用于获取或设置List可容纳元素的数量。当数量超过容量时,这个值会自动增长。您可以设置这个值以减少容量,也可以调用trin()方法来减少...Add( ) 在L...
  • C#List和ArrayList

    2020-03-28 14:24:13
    1.List有构造函数List(),添加方法Add(),对排序好的list进行对半查找的BinarySearch(),移除所有元素的方法Clear(),判断item元素是否在list里的函数Contains(),复制函数CopyTO(),查找方法FindIndex...

空空如也

1 2 3 4 5 ... 20
收藏数 1,190
精华内容 476
关键字:

add c# list

c# 订阅