Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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# ASP.MVC中的Getter和Setter是否可以实例化对象?_C#_Asp.net Mvc_Oop_Razor_Asp.net Core Tag Helpers - Fatal编程技术网

C# ASP.MVC中的Getter和Setter是否可以实例化对象?

C# ASP.MVC中的Getter和Setter是否可以实例化对象?,c#,asp.net-mvc,oop,razor,asp.net-core-tag-helpers,C#,Asp.net Mvc,Oop,Razor,Asp.net Core Tag Helpers,从中,我可以读到: using System; namespace AuthoringTagHelpers.Models { public class WebsiteContext { public Version Version { get; set; } public int CopyrightYear { get; set; } public bool Approved { get; set; } publi

从中,我可以读到:

using System;

namespace AuthoringTagHelpers.Models
{
    public class WebsiteContext
    {
        public Version Version { get; set; }
        public int CopyrightYear { get; set; }
        public bool Approved { get; set; }
        public int TagsToShow { get; set; }
    }
}
这是:

using System;
using AuthoringTagHelpers.Models;
using Microsoft.AspNetCore.Razor.TagHelpers;

namespace AuthoringTagHelpers.TagHelpers
{
    public class WebsiteInformationTagHelper : TagHelper
    {
        public WebsiteContext Info { get; set; }

      public override void Process(TagHelperContext context, TagHelperOutput output)
      {
         output.TagName = "section";
         output.Content.SetHtmlContent(
             $@"<ul><li><strong>Version:</strong> {Info.Version}</li>
            <li><strong>Copyright Year:</strong> {Info.CopyrightYear}</li>
            <li><strong>Approved:</strong> {Info.Approved}</li>
           <li><strong>Number of tags to show:</strong> {Info.TagsToShow}</li></ul>");
         output.TagMode = TagMode.StartTagAndEndTag;
      }
   }
}
使用系统;
使用AuthoringTagHelpers.Models;
使用Microsoft.AspNetCore.Razor.TagHelpers;
命名空间AuthoringTagHelpers.TagHelpers
{
公共类网站信息TagHelper:TagHelper
{
公共网站上下文信息{get;set;}
公共覆盖无效进程(TagHelperContext上下文,TagHelperOutput输出)
{
output.TagName=“section”;
output.Content.SetHtmlContent(
$@“
  • 版本:{Info.Version}
  • 版权年:{Info.CopyrightYear}
  • 已批准:{Info.Approved}
  • 要显示的标记数:{Info.TagsToShow}
”; output.TagMode=TagMode.starttagendtag; } } }
我以前从未见过这种代码,publicwebsitecontextinfo{get;set;}可以自动实例化一个对象


它是如何工作的?有相关文档吗?

公共网站上下文信息{get;set;}
未在此处实例化任何内容。如果调用以下代码:

var websiteInformationTagHelper=新的websiteInformationTagHelper()

然后
websiteInformationTagHelper.Info
将等于
null

请注意,现在可以在c#中指定默认值,如下所示,这与您所想的略有不同:
publicWebsiteContext Info{get;set;}=newWebsiteContext()

publicWebsiteContext Info{get;set;}
未在此处实例化任何内容。如果调用以下代码:

var websiteInformationTagHelper=新的websiteInformationTagHelper()

然后
websiteInformationTagHelper.Info
将等于
null

请注意,现在可以在c#中指定默认值,如下所示,这与您所想的略有不同:
公共WebsiteContext Info{get;set;}=newWebsiteContext()

答案如下:

注意

在如下所示的页面中:

答案是:

注意

在如下所示的页面中:


不是自动的,但是是的。get和set关键字是在访问(get)或将属性分配给(set)后调用的方法的简写。可以添加具有常规代码块的正文:

get { return _backingField; }
set { _backingField = value; }
value关键字表示分配给属性的值,您可以在这些块中执行与任何方法相同的大多数操作,包括实例化对象

Microsoft文档-自动实现的属性:


如果您指的是实例化父对象,我认为这是没有意义的

不是自动的,但是是的。get和set关键字是在访问(get)或将属性分配给(set)后调用的方法的简写。可以添加具有常规代码块的正文:

get { return _backingField; }
set { _backingField = value; }
value关键字表示分配给属性的值,您可以在这些块中执行与任何方法相同的大多数操作,包括实例化对象

Microsoft文档-自动实现的属性:

如果您指的是实例化父对象,我认为这是没有意义的

get { return _backingField; }
set { _backingField = value; }