2

在声明 paymentstatus 是否为空或在“if”语句中具有值时,我收到未分配变量“ps”的错误使用。我在想我已经宣布 ps 但显然我做错了什么。为什么编译器会抱怨这个?

这是它的上下文中的错误:

public IList<BestsellersReportLine> DailyBestsellersReport()
        {


            OrderStatus os; 
            PaymentStatus? ps; 
            ShippingStatus ss;
            int billingCountryId = 0;
            int recordsToReturn = 999; 
            int orderBy = 1;
            int groupBy = 1;



            int? paymentStatusId = null;
            if (ps.HasValue)
                paymentStatusId = (int)ps.Value;



            // Specifies the time range for sold products/day
            var range = new
            {
                startTimeUtc = DateTime.Today.AddDays(-1),
                endTimeUtc = DateTime.Today.AddSeconds(-1),



                CreatedOnUtc = DateTime.Today.AddDays(-1),

            };




            var query1 = from opv in _opvRepository.Table
                         join o in _orderRepository.Table on opv.OrderId equals o.Id
                         join pv in _productVariantRepository.Table on opv.ProductVariantId equals pv.Id
                         join p in _productRepository.Table on pv.ProductId equals p.Id
                         where (o.CreatedOnUtc >= range.startTimeUtc && o.CreatedOnUtc <= range.endTimeUtc) &&
                         (!paymentStatusId.HasValue || paymentStatusId == o.PaymentStatusId)
                         select opv;
}

谢谢!

4

5 回答 5

4

您已声明局部变量,但尚未分配值。因此,编译器可以帮助您防止此错误。

PaymentStatus? ps;  
// ...
if (ps.HasValue)

所以赋值:

PaymentStatus? ps = null;  
// ...
if (ps.HasValue)

但是,thix 修复了编译器错误,但仍然没有意义,因为它永远不会有值。也许您想改用方法参数:

public IList<BestsellersReportLine> DailyBestsellersReport(PaymentStatus? ps)
{
于 2014-02-10T08:36:00.690 回答
2

初始化你的ps变量,如

PaymentStatus? ps = null; //or something. 

Compiler Error CS0165

C# 编译器不允许使用未初始化的变量。如果编译器检测到使用了可能尚未初始化的变量,则会生成编译器错误 CS0165

于 2014-02-10T08:36:51.053 回答
1

它是一个未分配的变量,即你没有用一个值初始化它。

于 2014-02-10T08:35:46.373 回答
1

是的,您确实声明了变量。

然而它说“未分配”而不是“未声明”,并且您没有为变量分配任何值。只需将其设置为空。

于 2014-02-10T08:36:00.640 回答
1

你还没有初始化ps......你需要用至少null价值初始化它......

PaymentStatus? ps = null;

这同样适用于所有其他变量

于 2014-02-10T08:36:46.990 回答