【问题标题】:How to solve field 'XXX' is never assigned to, and will always have its default value?如何解决字段 'XXX' 从未分配给,并且始终具有其默认值?
【发布时间】:2021-10-13 22:18:45
【问题描述】:
public class Product : BaseEntity
{     
    public string ProductTitle { get; set; }
    public string ProductDescription { get; set; }

    
    private readonly DateTime _dateTime;
    public DateTime ProductExpirationDate
    {
        get { return _dateTime; }
        set
        {
            if (DateTime.Now >= _dateTime)
            {
                Console.WriteLine("Product past the expiration date!");
                
            } 
        }
    }
}

/***************/

class Program
{
    static void Main(string[] args)
    {         
        Product product = new Product
        {
            Id = 1,
            ProductTitle = "Milk",
            ProductDescription = "Description of milk",
            ProductExpirationDate = Convert.ToDateTime("08/09/2011 04:05:02")
        };

        Console.WriteLine(product.Id);       
        Console.WriteLine(product.ProductTitle);
        Console.WriteLine(product.ProductDescription);
        Console.WriteLine(product.AddDate);
        Console.WriteLine(product.ProductExpirationDate);
    }
}

除了“ProductExpirationDate”之外,一切都很好。我正在练习 OOP。但是我在 Program.cs 中给出的值不会发送到 Product.cs。它说“字段'Product.dateTime'从未分配给,并且将始终具有其默认值”

【问题讨论】:

  • 需要在setter中添加赋值_dateTime = value
  • 您在ProductExpirationDate 设置器中缺少_dateTime = value;
  • 该字段也不能只读

标签: c# oop properties field variable-assignment


【解决方案1】:

ProductExpirationDate 属性中,您没有分配任何值。你应该这样分配它:

set
{
    if (DateTime.Now >= _dateTime)
    {
        Console.WriteLine("Product past the expiration date!"); 
    } 

    _dateTime = value;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    相关资源
    最近更新 更多