【问题标题】:Cannot Implicity Convert Type in findResults.NextPageOffset [duplicate]无法隐式转换 findResults.NextPage 偏移中的类型 [重复]
【发布时间】:2020-08-16 19:05:34
【问题描述】:

我正在编写代码以批量检索 Exchange 电子邮件消息 100

SearchFilter sf = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false));
FindItemsResults<Item> findResults;
ItemView view = new ItemView(100);
int inboxCount = 1;
do
{
    findResults = service.FindItems(WellKnownFolderName.Inbox, sf, view);
    foreach (var item in findResults.Items)
    {
        Console.WriteLine(inboxCount + ". " + item.Subject);
        inboxCount++;
    }

    //error below
    view.Offset = findResults.NextPageOffset;
}
while (findResults.MoreAvailable);

但是,我在findResults.NextPageOffset; 上遇到了以下错误:

不能隐式转换类型“int?”到'int'。显式转换 存在(您是否缺少演员表?)

我们将不胜感激。

【问题讨论】:

    标签: c# exchangewebservices


    【解决方案1】:

    只需使用Value,它将为您提供来自nullable intint

    view.Offset = findResults.NextPageOffset.Value;
    

    不过有可能是null,那你怎么办?好吧,这取决于你。

    if(!findResults.NextPageOffset.HasValue)
       throw new InvalidOperationException("Oh dear...");
    

    进一步阅读

    Nullable types (C# Programming Guide)

    使用 Nullable.HasValue 和 Nullable.Value 只读属性 测试 null 并检索值,如下所示 例如:if (x.HasValue) y = x.Value;

    【讨论】:

    • 谢谢@TheGeneral。我尝试了您的解决方案,并按顺序修改并在我的代码中包含上述语句。但是,在它能够到达if 语句之前,出现了一个错误,表明Nullable object must have a value
    • @gymcode 检查必须在调用Value之前进行,想法是在访问Value之前先检查它是否为空并处理它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多