You'll have to check the code, but [I think] a shoppingcartitem will have a custom property that loads a variant by reference (id) so if you initialise a new object of type ShoppingCartItem, the product variant will probably be null, as the variant reference will be null or uninitialised.
Like I said, please check the [ShoppingCartItem class] code, as I am just guessing here.