【发布时间】:2017-06-09 13:47:59
【问题描述】:
我正在尝试从一个单独的程序中提取一个日期,并使用它来确定合同的到期日期。我已经为月日和年调用了 int,然后使用 DateTime 分配给另一个 var。
我对 C# 相当陌生,并且无法找到解决此块出现错误的方法。错误告诉我它不能隐式转换 int?到 int,当我使用 int 时? var 声明日月和年,然后将错误向下移动到 DateTime 行。
这可能需要采用不同的结构,但我不知道那会是什么。
private Instrument m_instr = null;
private void m_getInstrDetails(Instrument instr)
{
m_ContractName = instr.Name.ToString();
m_type = instr.Product.Type.ToString();
m_prod = instr.Product.ToString();
m_SmallestTickIncrtement = instr.InstrumentDetails.SmallestTickIncrement;
//month calc
int month = m_instr.InstrumentDetails.ExpirationDate.Month;
int day = m_instr.InstrumentDetails.ExpirationDate.Day;
int year = m_instr.InstrumentDetails.ExpirationDate.Year;
m_expDate1 = new DateTime(year, month, day);
【问题讨论】:
-
嗯,大概
ExpirationDate.Month的类型是int?,而不是int。没有[mcve]很难说。 (首先,我们不知道Instrument类型是什么。) -
如果值为
null,您期望会发生什么? -
请提供
Intrument和InstrumentDetails的定义。 -
是的,ExpirationDate.Month 是 int?,inst 是私有 Instrument m_instr = null;
-
这些值是可选的吗?如果没有,则抛出异常。
if(day.HasValue == false) throw new ArgumentException()其他明智的做法是提供默认值,day ?? 1
标签: c#