首页 > 解决方案 > 如何解决字段 'XXX' 从未分配给,并且始终具有其默认值?

问题描述

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'从未分配给,并且将始终具有其默认值”

标签: c#ooppropertiesfieldvariable-assignment

解决方案


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

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

    _dateTime = value;
}

推荐阅读