3

我想返回英国格式的日期,而不是它当前存储的美国格式。

因此,我决定为我的类中的值添加一个 getter 和 setter。

但是,当我使用 getter 和 setter 运行代码时,页面无法加载。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

// Globalisation for converting dates from American to British format
using System.Globalization;

/// <summary>
/// Class to hold the summary of an order take from database TOEHEAD
/// </summary>
public class OrderSummary
{

    public string order_number { get; set; }
    public string order_date
    {
        get
        {
            try
            {
                string ukDateTimeFormat = Convert.ToString(DateTime.Parse(this.order_date, CultureInfo.CreateSpecificCulture("en-US")));

                return ukDateTimeFormat;
            }
            catch (FormatException e)
            {
                return "Error";
            }
        }

        set
        {
            this.order_date = value;
        }
    }
    public string order_total { get; set; }

    public OrderSummary()
    {

    }

}

如果我将此代码放入一个函数并以这种方式返回它,它就可以正常工作。

我是不是格式有问题?

4

2 回答 2

9

您通过从获取代码中调用相同的属性来导致堆栈溢出

string ukDateTimeFormat = Convert.ToString(DateTime.Parse(**this.order_date**, CultureInfo.CreateSpecificCulture("en-US")));

您也可以在set

this.**order_date** = value;

固定代码:

private string m_order_date;
public string order_date
{
    get
    {
        try
        {
            string ukDateTimeFormat = Convert.ToString(DateTime.Parse(m_order_date, CultureInfo.CreateSpecificCulture("en-US")));

            return ukDateTimeFormat;
        }
        catch (FormatException e)
        {
            return "Error";
        }
    }

    set
    {
        m_order_date = value;
    }
}
于 2012-08-09T15:56:16.297 回答
3

看起来你有一个循环引用。您的 order_date 获取器正在调用 order_date。

于 2012-08-09T15:57:30.807 回答