You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# 如何实例化对象并加入List的同时获取引用,支持单行实现?

可行实现方案

有多种可以实现一行代码完成实例化、加入列表、获取引用的方案,如下:


方案1:无侵入的一行多语句写法

不需要修改任何现有代码,直接在同一行写两条语句即可:

Car c1 = new Car("Honda Civic"); CarsList.Add(c1);

执行顺序为:实例化Car对象→赋值给c1变量→将对象添加到列表,完全满足需求。


方案2:扩展方法封装实现单表达式调用

如果希望用单个表达式完成操作,可以给List<T>封装一个扩展方法:

public static class ListExtensions
{
    public static T AddAndReturn<T>(this List<T> list, T item)
    {
        list.Add(item);
        return item;
    }
}

后续调用只需要一行代码:

Car c1 = CarsList.AddAndReturn(new Car("Honda Civic"));

该方案复用性高,适合需要频繁执行同类操作的场景。


补充方案:内联赋值写法

不想写扩展方法又要单表达式实现的话可以用这种写法,可读性稍差:

Car c1; CarsList.Add(c1 = new Car("Honda Civic"));

之前方案失败原因说明
  1. 构造函数内添加this到列表的问题:
    这种写法会导致Car类和静态列表强耦合,所有Car实例都会被强制加入列表,灵活度极低;你遇到的添加结果为null的问题,大概率是静态CarsList没有提前初始化,或者对象构造过程中出现异常;另外静态列表会长期持有实例引用,容易引发内存泄漏问题。
  2. 直接赋值Add返回值的问题:
    原生List<T>.Add方法返回值为void,没有返回值,自然无法直接赋值给变量。

内容的提问来源于stack exchange,提问作者Nimral

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:54:08