dotnet/roslyn

Cannot use index initializer with fixed sized buffer

開放

#39,632 建立於 2019年11月1日

 (9 則留言) (0 個反應) (0 位負責人)C# (4,257 個分叉)batch import
Area-CompilersBughelp wanted

倉庫指標

星標
 (20,414 顆星)
PR 合併指標
 (平均合併 6天 17小時) (30 天內合併 256 個 PR)

描述

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).

貢獻者指南