In C#, no not currently with an auto-generated property (though VB.NET auto-properties can do this).  This is something I have often wished for myself.  So you could manually roll your own property, or use a constructor.  
Either way you'll have some code you wish you didn't have to write to do this (manual property with no constructor vs. auto-property with constructor).  
Interestingly, though, the IL is different between the two options.  When you have a manual property with a backing field using an initializer, it will get executed before the base-class constructor in C#:
MyClass..ctor:
IL_0000:  ldarg.0     
IL_0001:  newobj      System.Collections.Generic.List<System.Object>..ctor
IL_0006:  stfld       UserQuery+MyClass._products
IL_000B:  ldarg.0     
IL_000C:  call        System.Object..ctor
IL_0011:  nop         
IL_0012:  ret         
While using an auto-property with initialization in the constructor will get executed after the base-class constructor in C#:
MyClass..ctor:
IL_0000:  ldarg.0     
IL_0001:  call        System.Object..ctor
IL_0006:  nop         
IL_0007:  nop         
IL_0008:  ldarg.0     
IL_0009:  newobj      System.Collections.Generic.List<System.Object>..ctor
IL_000E:  call        UserQuery+MyClass.set_Products
IL_0013:  nop         
IL_0014:  nop         
IL_0015:  ret       
I'm only saying this as a point of curiosity, as writing code that depends on initialization order in .NET can be risky (initialization order in fact differs a bit between VB.NET and C#)