dotnet/roslyn

Cannot use index initializer with fixed sized buffer

Aperta

#39.632 aperta il 1 nov 2019

 (9 commenti) (0 reazioni) (0 assegnatari)C# (4257 fork)batch import
Area-CompilersBughelp wanted

Metriche repository

Star
 (20.414 stelle)
Metriche merge PR
 (Merge medio 6g 17h) (256 PR mergiate in 30 g)

Descrizione

You currently cannot use an index initializer to populate a fixed-sized buffer. For example:

struct Body
{
    public fixed double V[3];
}

new Body
{
	V = 
	{
		[0] = 1,
		[1] = 2,
		[2] = 3
	}
};

emits on V = an error:

error CS1666: You cannot use fixed size buffers contained in unfixed expressions. Try using the fixed statement.

Firstly, if this is intended behavior, I would at least improve the error message, especially since trying to pin Body.V emits

error CS0213: You cannot use the fixed statement to take the address of an already fixed expression

so you cannot even resolve this issue in the way the error message suggests. However, I think that it should work as expected (and I believe that it can be supported within the current parameters of the language).

Guida contributor