【问题标题】:How do I set two class properties from one SET method c#如何从一个 SET 方法 c# 设置两个类属性
【发布时间】:2014-12-08 13:27:29
【问题描述】:

假设我有一个代表一个页面的对象类,它有两个属性strTitle 存储原始标题和strUrlTitle我想存储 URL 友好标题。 我只想在分配strTitle 时分配strUrlTitle,因此我使用了以下代码。

public class Page
{
    public strUrlTitle {get; private set;}
    public strTitle {
      get
      {
          return strTitle;
      }
      set
      {
          strTitle = value;
          strUrlTitle = HttpUtility.UrlEncode(value.Replace(" ", "-").Trim());
      }
    }
}

但似乎当我调用 set 方法并分配 strTitle 值时,再次调用 set 方法,我们最终陷入无限循环。因此我的问题是如何从一个 get 方法分配两个值?

谢谢

【问题讨论】:

    标签: c#


    【解决方案1】:

    您需要创建一个支持字段。现在你的 setter 和 getter 调用自己,导致无限循环:

    private string _title;  
    public Title 
    {
        get
        {
            return _title;
        }
        set
        {
            _title = value;
            UrlTitle = HttpUtility.UrlEncode(value.Replace(" ", "-").Trim());
        }
    }
    
    public UrlTitle { get; private set; }
    

    如果您搜索“C# 属性设置器无限循环”,另请参阅 I am getting into infinite loop in property setter 以及许多其他潜在的重复项。

    【讨论】:

    • 还值得一提的是,当使用速记set; 时,会在编译过程中自动创建此类支持字段。在习惯了速记形式之后,当我最近需要一个自定义设置器时,我遇到了同样的问题:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多