3-_-3 2018-07-24 00:34 采纳率: 50%
浏览 766
已采纳

关于一个没有见过的new关键字的c#语法使用求解

近期在学习一个别人写的代码,看到一段关于http头部数据拷贝的语句,但是用法实在奇怪,没见过此类语法。
主要代码如下:

private WebHeaderCollection _header;


//由于传递过去的Headers的值可能发生变化,所以这里需要完全拷贝一份。
WebHeaderCollection tmpHeader = new WebHeaderCollection { _header };
http.Headers = tmpHeader;

_header对象在申明以后,还有一些赋值操作,这里省略了,没有写出来。代码中的注释是本来就有的注释,说明该语句用于对_header进行数据拷贝,但是此类new语法我看不懂,不像是调用WebHeaderCollection的构造函数,也不像匿名类,因为有类名。
求解?

  • 写回答

3条回答 默认 最新

  • threenewbee 2018-07-24 01:35
    关注

    我知道了,刚才看错了。
    这个是集合初始化器
    相当于
    WebHeaderCollection tmpHeader = new WebHeaderCollection();
    tmpHeader.Add(_header);

    你可以自己做一个实验。新建一个控制台程序,编写如下代码:

     using System;
    
    class A : System.Collections.IEnumerable
    {
    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
        return null;
    }
    public void Add(string s)
    {
    Console.WriteLine("add " + s);
    }
    }
    
    public class Test
    {
        public static void Main()
        {
            // your code goes here
            A a = new A{ "hello", "world "};
        }
    }
    

    https://ideone.com/UhElWX

    add hello
    add world

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号