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 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献