为什么“stackalloc”关键字不适用于属性?

2023-12-29

我最近用 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一,假设代码有问题。


stackalloc must成为局部变量声明的一部分,如文档中讨论过 https://msdn.microsoft.com/en-us/library/cx9s2sy4.aspx.

[stackalloc] 关键字是仅在局部变量中有效初始化器。以下代码会导致编译器错误。

int* block;
// The following assignment statement causes compiler errors. You
// can use stackalloc only when declaring and initializing a local 
// variable.
block = stackalloc int[100];

因此,这确实是一个语法错误;并拒绝obj.Property = stackalloc .. form.

(稍后对属性的赋值是一个未捕获的语义错误。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么“stackalloc”关键字不适用于属性? 的相关文章

  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • 按字典顺序对整数数组进行排序 C++

    我想按字典顺序对一个大整数数组 例如 100 万个元素 进行排序 Example input 100 21 22 99 1 927 sorted 1 100 21 22 927 99 我用最简单的方法做到了 将所有数字转换为字符串 非常昂贵
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • 将 System.Windows.Forms.Keys 序列转换为 Char

    有没有办法转换由 Keys 枚举表示的击键序列 即System Windows Forms Keys 在一个字符中 例如 Keys Oem4进而Keys A产生 char 它一定存在于 WinAPI 中的某个地方 因为当我在文本框中按下按键
  • 可空属性与可空局部变量

    我对以下行为感到困惑Nullable types class TestClass public int value 0 TestClass test new TestClass Now Nullable GetUnderlyingType
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • char指针或char变量的默认值是什么[重复]

    这个问题在这里已经有答案了 下面是我尝试打印 char 变量和指针的默认值 值的代码 但无法在控制台上看到它 它是否有默认值或只是无法读取 ASCII 范围 include
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • 如何在 Angular API 请求的标头中传递 x-api-key? [复制]

    这个问题在这里已经有答案了 我正在尝试发送x api keyheaders中的header如下图 服务 ts import Injectable from angular core import Http Headers RequestOp
  • 安装 APK 时出现 DELETE_FAILED_INTERNAL_ERROR 错误

    I am using Android Studio 2 2 Preview I am facing the issue 失败 安装失败无效的apk 错误 安装 apk 时 我已经在 build gradle 中进行了更改 但无法重新跟踪它
  • ng-grid 支持虚拟滚动吗?

    我想在我的应用程序中使用 Slickgrid 来实现网格功能 但由于我大部分时间都使用 AngularJS 我认为 ng grid 是可行的方法 但不确定它是否支持虚拟滚动 我尝试查看他们的文档和没有找到任何有关虚拟滚动支持的信息 如果可能
  • 如何在一定时间限制后调用另一个活动

    如何为将一项活动调用另一项活动设定时间限制 我想在给定的时间限制内调用另一个活动 例如 将 A 类呼叫到 B 类 我使用了alarmManager 但我的应用程序不可能也使用线程 每当我给出Thread sleep时 它都不会执行操作 直到
  • 为什么使用单例而不是静态方法?

    对于这些有关帮助器 实用程序类的简单问题 我从未找到好的答案 为什么我要创建一个单例 无状态 而不是使用静态方法 如果对象没有状态 为什么还需要对象实例 通常 单例用于引入某种全局状态到一个应用程序 老实说 这种情况经常超出真正必要的范围
  • 函数声明中缺少“虚拟”限定符

    在搜寻一些旧代码时 我遇到了类似于以下内容的内容 class Base public virtual int Func class Derived public Base public int Func Missing virtual qu
  • 使用 Apache CXF 的 JAX-RS 文件上传

    我正在尝试使用 JAX RS 和 TomEE 的 Apache CXF 实现 2 6 14 上传文件 但上传的文件始终为空 这是代码 POST Path upload Consumes MediaType MULTIPART FORM DA
  • 使用 XAML 将故事板完成时元素的可见性设置为折叠

    我有一个故事板动画 它使用不透明度属性使控件淡出视图 完成后 我想将控件的可见性设置为折叠 我也希望能够执行相反的操作 将可见性设置为可见 然后使用故事板将控件淡入视图中 我知道我可以连接事件 但我想在 XAML 中完成这一切 是否可以 你
  • 如何从 git 存储库加载最新的 Clojure 库

    我想使用最新的开发版本clojure data xml 我正在使用 Leiningen 来管理依赖项 但是 存储库中没有 SNAPSHOT 版本Central http search maven org search 7Cgav 7C1 7
  • Common Lisp 双反引号、反引号、引号、反引号序列?

    我正在阅读 Let Over Lambda 它涉及一些非常深入的分层宏创作 这很有趣 我基本上都能跟上它的步伐 在第 4 章中 Hoyte 为 CL PPCRE 匹配和替换功能实现了读取器宏 这样您就可以执行以下操作 m foo bar d
  • 如何围绕 Web Workers API 编写 Promise 包装器?

    我正在编写一个使用 Web Workers 的库 库的使用者不应该看到任何 Web Worker 的内容 而应该从该库的公共方法返回一个 Promise 如下所示 consumer js const api new Api api doCa
  • timer_create() : -1 EAGAIN(资源暂时不可用)

    我在运行 ARM 的嵌入式 Linux 下创建计时器时遇到问题 我正在使用自制的 C 库来管理计时器 我自己没有编写代码 尽管我可以访问源代码 但我并不深入了解其实现 它工作了一段时间 然后我收到错误 EAGAIN 使用 strace 我注
  • 在急切加载中过滤导航属性

    我一直在使用软删除 现在我想加载未 删除 的实体的导航属性 我找到了一种方法 这种方法的问题对我来说并不清晰 还有另一种方法可以做到这一点 Context CreateSet Include Salary Select u gt new U
  • java.util.MissingResourceException:找不到基本名称 javax.servlet.LocalStrings、区域设置 es_ES 的包

    我试图在我的一个 servlet 中执行一些 jUnit 测试 但每当我尝试运行它时 我都会收到 ExceptionInInitializerError 我读到此错误是由于在评估静态初始值设定项或静态变量的初始值设定项期间发生的异常所致 问
  • Adobe Air mobile - 使用 SkinClass 允许滚动时,softKeyboardType 不起作用?

    我正在尝试将 softKeyboardType 设置为电子邮件 但当我使用 SkinClass spark skins mobile TextAreaSkin 时 它不会改变它 但当我脱掉 SkinClass spark skins mob
  • 摘要不适用于 OLS 估计

    我的 statsmodels OLS 估计有问题 该模型运行没有任何问题 但是当我尝试调用摘要以便我可以看到实际结果时 当 a 的形状和权重不同时 我得到需要指定的轴的 TypeError 我的代码如下所示 from future impo
  • iOS 协议/委托混淆?

    这一切都是我的第一篇文章 我会尽力做到尽可能准确 我读过很多关于 iOS 协议 委托实现的文章 但所有示例都失败了 让我们说 我有 A 和 B 控制器 想将数据从 A 发送到 B 啊 protocol exampleprot
  • 修改Python 2中的URL组件

    在 Python 2 中是否有更简洁的方法来修改 URL 的某些部分 例如 http foo bar gt http foo yah 目前 我正在这样做 import urlparse url http foo bar Modify pat
  • 在栈上创建一个指针

    我正在学习 C 我有一个关于指针的问题 我有这个代码 int max new int max 0 我想 我已经在堆上创建了一个指针 如果我不对 请告诉我 一个问题 有没有一种方法可以用一条指令创建一个初始化指针 现在 我使用两条指令 另一个
  • 为什么“stackalloc”关键字不适用于属性?

    我最近用 C 编写了一些不安全的代码 注意到这会产生语法错误 public unsafe class UnsafeByteStream public UnsafeByteStream int capacity this Buffer sta