首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我们不能直接在List<string> obj= List<string>()中添加值?

在C#中,List<string> obj = List<string>(); 这种写法实际上是创建了一个 List<string> 类型的匿名对象,并没有将其赋值给一个变量。因此,你无法直接在这个匿名对象上添加值。

正确的写法应该是:

代码语言:txt
复制
List<string> obj = new List<string>();

这样,你就创建了一个 List<string> 类型的实例,并将其赋值给了变量 obj。然后,你可以使用 Add 方法向这个列表中添加值:

代码语言:txt
复制
obj.Add("Hello");
obj.Add("World");

基础概念

  • List<T>: 这是C#中的一个泛型集合类,用于存储一组相同类型的元素。T 是类型参数,表示列表中元素的类型。
  • new 关键字: 用于创建对象的实例。

相关优势

  1. 类型安全: 使用泛型集合可以确保集合中只包含特定类型的元素,减少类型转换错误。
  2. 性能优化: 泛型集合在编译时进行类型检查,避免了运行时的装箱和拆箱操作,提高了性能。
  3. 易于使用: 提供了丰富的成员方法,如 Add, Remove, Contains 等,便于操作集合中的元素。

类型

List<T> 是一个泛型类,可以存储任何类型的对象。例如:

代码语言:txt
复制
List<int> intList = new List<int>();
List<double> doubleList = new List<double>();
List<Person> personList = new List<Person>();

应用场景

  • 数据存储: 当你需要存储一组相同类型的元素时,可以使用 List<T>
  • 数据处理: 在数据处理过程中,经常需要对一组数据进行增删改查操作,List<T> 提供了便捷的方法来实现这些操作。
  • 算法实现: 在实现某些算法时,需要使用到集合类来存储中间结果或最终结果。

遇到的问题及解决方法

如果你遇到无法直接在 List<string> 中添加值的问题,通常是因为没有正确创建实例。确保使用 new 关键字来创建实例:

代码语言:txt
复制
List<string> obj = new List<string>();
obj.Add("Your value here");

这样就可以正常向列表中添加值了。

示例代码

代码语言:txt
复制
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // 正确创建 List<string> 实例
        List<string> obj = new List<string>();

        // 添加值
        obj.Add("Hello");
        obj.Add("World");

        // 输出列表内容
        foreach (string item in obj)
        {
            Console.WriteLine(item);
        }
    }
}

通过这种方式,你可以顺利地在 List<string> 中添加和管理字符串元素。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • C#透彻解析数组、ArrayList和List的区别

    Console.ReadKey(); 输出结果: 从上面例子看,ArrayList好像是解决了数组中所有的缺点,为什么又会有List?...我们从上面的例子看,在List中,我们不仅插入了字符串acde,而且插入了数字1234。这样在ArrayList中插入不同类型的数据是允许的。...)i; 拆箱:就是从引用数据中提取值类型 比如将object对象obj的值赋给int类型的变量i object obj=”abc”; int i=(string)obj; 装箱与拆箱的过程是很损耗性能的...//移除数据 list.RemoveAt(0); 上例中,如果我们往List集合中插入int数组123,IDE就会报错,且不能通过编译。...补充: 用ArrayList对哈希表进行排序 对哈希表进行排序在这里的定义是对key/value键值对中的key按一定规则重新排列,但是实际上这个定义是不能实现的,因为我们无法直接在Hashtable

    1.4K30

    详解 Java 泛型

    有一个著名的面试题:假设有定义以下类,问能不能成功编译和运行 public class Test { public void test(ListString> listStr) { }...泛型名称 第二个红框中,标明了这个泛型类的泛型参数名称,这里是 TT,为什么会有两个 T 呢?...这个结果小伙伴们仔细思考一下不难理解:Template 类中 obj 字段为 Object,我们使用 String 类型的引用来承接 template.getObj() 方法的返回结果对象。...我们不能再向 list1 这个容器中 add 任何元素了!为什么呢。因为编译器并不知道实际类型是什么(因为你给了编译器一个问号),所以你 add 任何类型的对象都会报类型不兼容的语法错误。...抱歉,编译器不会这么做,除非在 “实在没有办法” 的情况,例: Object obj = list1.get(0); 为什么把调用 list1 的 get 方法叫 “实在没有办法” 的情况呢?

    93420

    Java关键字——instanceof

    在 JavaSE规范 中对 instanceof 运算符的规定就是:如果 obj 为 null,那么将返回 false。...6、问题   前面我们说过编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译,具体看运行时定。...>);//false System.out.println(p1 instanceof List);//编译报错   按照我们上面的说法,这里就存在问题了,Person 的对象 p1 很明显不能转换为...String 对象,那么自然 Person 的对象 p1 instanceof String 不能通过编译,但为什么 p1 instanceof List 却能通过编译呢?...所以对于上面提出的问题就很好理解了,为什么 p1 instanceof String 编译报错,因为(String)p1 是不能通过编译的,而 (List)p1 可以通过编译。

    1.9K70

    ⭐️C# 零基础到进阶⭐️| 字典和列表 相互嵌套使用 的终极总结!

    字典 字典的含义: 字典中key只能对应一个值不能对应多个值,线性结构。...如果我们有许多类型一样但数量不定的数据,我们可以使用集合类来进行管理——例如列表List。我们可以使用列表List很方便的添加数据,删除数据以及其他的一些数据操作。...{ Console.WriteLine(list[i]);//遍历打印链表的值 } 使用方法 添加:list.Add(key)给字典添加值...而列表中的元素则是我们添加进去的、需要管理的数据,通过Count进行获取。...总结 字典和列表 相互嵌套使用 的几种方式,包括实例讲解,应该没有被绕晕吧,这只是介绍了双层嵌套使用 更多层的嵌套使用方法类似,就一直套用就好了,遍历的时候多次循环使用就好啦! 今天你学废了吗!

    2.6K30

    面试问题之:JSON是什么?

    XML也是一种数据交换格式,为什么没有选择XML呢?...对象如图: image.png 3,修改JSON中的数据 我们现在要修改JSON中count的值,代码如下: function Update() { obj.count = 10...image.png 4,删除JSON中的数据 我们现在实现从JSON中删除count这条数据,代码如下: function Delete() { delete obj.count...5,遍历JSON对象 可以使用for…in…循环来遍历JSON对象中的数据,比如我们要遍历输出obj对象的值,代码如下: function Traversal() { for (...比如,现在我们有一个TStudent的学生表,表中的字段和已有数据如图所示 image.png 从表中我们可以看到一共有五条数据,现在我们要从数据库中取出这些数据,然后利用JSON.NET的JsonConvert

    1.8K20

    JavaBean,为什么要重写hashCode()方法和equals()方法及如何重写

    一、我们为什么需要重写hashCode()方法和equals()方法?(Why) 有时在我们的业务系统中判断对象时有时候需要的不是一种严格意义上的相等,而是一种业务上的对象相等。...在这种情况下,原生的equals方法就不能满足我们的需求了....我们所知道的JavaBean的超类(父类)是Object类,JavaBean中的equals方法是继承自Object中的方法.Object类中定义的equals()方法是用来比较两个引用所指向的对象的内存地址是否一致...Object类中equals()方法的源码 public boolean equals(Object obj) { return (this == obj); } public class...(When) 当我们自定义的一个类,想要把它的实例保存在以Hash散列查找的集合中时,我们就需要重写这两个方法; public class Student { private String name;

    97730

    线程sleep,wait,notify,join,yield方法解析

    String> list = new ArrayListString>(); public void add() { list.add("abc"); }...public int getSize() { return list.size(); } } 以上,就是创建一个t2线程,判断list长度是否为5,不是的话,就一直阻塞。...然后,另外一个t1线程不停的向list中添加元素,当元素长度为5的时候,就去唤醒阻塞中的t2线程。 然而,我们会发现,此时的t1线程会继续往下执行。直到方法执行完毕,才会把锁释放。...(因为,我们知道,正常情况下,调用start方法之后,是不能控制线程的执行顺序的) 咳咳,当前青涩的我,面试时就被问到这个问题,是一脸懵逼。...既然yield不释放锁,那为什么还要放弃执行权呢。就算放弃了执行权,别的线程也无法获得锁啊。) 所以,我的理解,yield一般用于不存在锁竞争的多线程环境中。

    2.3K20

    深入理解 Java 泛型

    为什么需要泛型 JDK5 引入了泛型机制。 为什么需要泛型呢?回答这个问题前,先让我们来看一个示例。...Object obj1 = list.get(0); Object obj2 = list.get(1); Object obj3 = list.get(2);...假设,最初我们希望向 List 存储的是整形数据,假设,某个家伙不小心存入了其他数据类型。当你试图从容器中取整形数据时,由于 List 当成 Object 类型来存储,你不得不使用类型强制转换。...比如 T get() 方法声明就变成了 Object get() ;ListString> 就变成了 List。如有必要,插入类型转换以保持类型安全。 生成桥接方法以保留扩展泛型类型中的多态性。...通配符和向上转型 前面,我们提到:泛型不能向上转型。但是,我们可以通过使用通配符来向上转型。

    42120

    【c++】 C语言的输入与输出&&C++的IO流&&STL空间配置器

    1.C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf() scanf(): 从标准输入设备(键盘)读取数据,并将值存放在变量中 printf(): 将指定的文字...但如果是字符型和字符串,则空格(ASCII码为32)无法用cin输入,字符串中也不能有空格。...虽然在常规使用STL时,可能用不到它,但站在学习研究的角度,学习它的实现原理对我们有很大的帮助 6.为什么需要空间配置器 前面在模拟实现vector、list、map、unordered_map等容器时...为什么? 对用户归还的空间能否直接拼接在大块内存前? 对用户归还的空间如何进行管理? 不断切割会有什么后果?...nobjs) return(chunk); // 找到对应的桶号 my_free_list = free_list + FREELIST_INDEX(n); // 将第一块返回值用户,其他块连接在对应的桶中

    10610

    Java 泛型示例 - 泛型方法,类,接口

    Java Genrics 是 Java 5 中引入的最重要的功能之一。 如果您一直在使用Java Collections并使用版本 5 或更高版本,那么我确定您已经使用过它。...String str=(String) obj; } 上面的代码可以很好地编译,但是在运行时会引发ClassCastException,因为我们试图将列表中的对象强制转换为String,而其中一个元素是...在多个范围内,我们不能有多个类。 7. Java泛型和继承 我们知道,如果A是B的子类,则Java继承允许我们将变量A分配给另一个变量B。...是泛型中的通配符,表示未知类型。通配符可以用作参数,字段或局部变量的类型,有时还可以用作返回类型。在调用通用方法或实例化通用类时,不能使用通配符。...> list){ for(Object obj : list){ System.out.print(obj + "::"); } } 我们可以为PrintData方法提供List String

    2.6K50

    Scala Reflection - Mirrors,ClassTag,TypeTag and WeakTypeTag

    特别是java-reflection无法获取泛类型在runtime过程中的信息,这个一直是一个诟病。...上面的例子里list里的String元素被筛选出来了。但是如果我们像下面这样使用extract呢?...1, 2), List(a, b)) 可以看到,虽然compiler产生并提供了TypeTag隐式参数evidence$3,但运算结果并不正确,这是为什么呢?...我们只能用ClassTag来比较某个值的类型,而在运算时用TypeTag只能进行类型对比。extract中elem是List里的一个元素,是个值,所以只能用ClassTag来判别这个值的类型。...如果使用TypeTag的话我们只能实现像下面示例中的类型对比: 1 def meth[T: ru.TypeTag](xs: List[T]) = ru.typeTag[T].tpe match {

    1.4K100
    领券