I'm working with the new [Task Parallel Library](http://msdn.microsoft.com/en-us/library/dd460717.aspx) and today went to this case:

This code doesn't compile:

```
    internal Task<Guid?> SavePages(string[] pages)
    {
        return Task.Run(() =>
        {
            if (pages == null || pages.Length == 0)
                return null;

            ....

```

Unless I explicitly returns a null nullable Guid:

```
    internal Task<Guid?> SavePages(string[] pages)
    {
        return Task.Run(() =>
        {
            if (pages == null || pages.Length == 0)
                return (Guid?)null;

            // Check documents path access

```

Why this behavior, I'm I doing something wrong? I mean, I get the code to work with the second option but don't know If I'm misusing the library, I mean, null is always null, isn't it?

Compile error: 

> 
> Cannot convert lambda expression to delegate type
>  'System.Func' because some of the return
>  types in the block are not implicitly convertible to the delegate
>  return type
> 
> 
> 

<http://msdn.microsoft.com/en-us/library/dd460717.aspx>