Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在1 go中实例化和属性设置_C#_Asp.net Mvc - Fatal编程技术网

C# 在1 go中实例化和属性设置

C# 在1 go中实例化和属性设置,c#,asp.net-mvc,C#,Asp.net Mvc,这是如何评估的,比如,流量是多少 这: 可以转化为: var tag = new TagBuilder("a") { MergeAttribute("href", pageUrl(i)), InnerHtml = i.ToString() }; 是不是: 安装新对象 解析参数并设置它 将所有值指定给属性 实际上,它是否意味着同样的事情,为什么和如何 即使没有正在解析的“a”,它还会实例化对象并为所有属性值提供默认值吗?首先,您不能在对象初始值设定项中调用方法。所以你可能有这个:

这是如何评估的,比如,流量是多少

这:

可以转化为:

var tag = new TagBuilder("a")
{
    MergeAttribute("href", pageUrl(i)),
    InnerHtml = i.ToString()
};
是不是:

  • 安装新对象
  • 解析参数并设置它
  • 将所有值指定给属性
  • 实际上,它是否意味着同样的事情,为什么和如何


    即使没有正在解析的
    “a”
    ,它还会实例化对象并为所有属性值提供默认值吗?

    首先,您不能在对象初始值设定项中调用方法。所以你可能有这个:

    var tag = new TagBuilder("a")
    {
        // MergeAttribute("href", pageUrl(i)), you can not do this
        InnerHtml = i.ToString()
    };
    
    正如@RadimKohler所说,这是一个由编译器提供的语法糖。您编写这样的代码,在编译时,编译器将完成其余的工作。因此,编译器生成的代码,例如:

    TagBuilder tag = new TagBuilder("a");
    tag.InnerHtml = i.ToString();
    // the rest of your code...
    

    本规范§7.6.10.2对象初始值设定项对此进行了解释。引用其中一个示例,说明如何编译对象初始值设定项:

    以下类表示具有两个坐标的点:

    public class Point
    {
       int x, y;
    
       public int X { get { return x; } set { x = value; } }
       public int Y { get { return y; } set { y = value; } }
    }
    
    点的实例可以按如下方式创建和初始化:

    Point a = new Point { X = 0, Y = 1 };
    
    这和

    Point __a = new Point();
    __a.X = 0;
    __a.Y = 1;
    Point a = __a;
    
    其中,
    \u a
    是一个不可见且不可访问的临时文件 变数


    它只是编译器提供的语法糖。结果是100%相同。您的第二个代码段将无法编译,无法从对象初始值设定项调用方法。我不知道你为什么要说“解析”,C#不是一种解释语言。谢谢你的评论
    Point __a = new Point();
    __a.X = 0;
    __a.Y = 1;
    Point a = __a;