【发布时间】:2015-09-02 00:50:11
【问题描述】:
我最近在 C# 中编写了一些不安全的代码,并注意到这会产生语法错误:
public unsafe class UnsafeByteStream
{
public UnsafeByteStream(int capacity)
{
this.Buffer = stackalloc byte[capacity];
}
public byte* Buffer { get; }
}
这样的结果是:"Invalid expression term 'stackalloc' / ; expected / } expected"。但是,当我首先将其分配给本地字段时,如下所示:
public UnsafeByteStream(int capacity)
{
byte* buffer = stackalloc byte[capacity];
this.Buffer = buffer;
}
那么就不会产生语法错误了。
这是有原因的,还是编译器出了问题?我知道指针类型的属性并不是那么常见,但我仍然不明白为什么这是一个 syntax 错误而不是 semantic 错误,假设有问题用代码。
【问题讨论】:
标签: c# .net pointers properties unsafe