可选参数“必须是编译时常量”

2024-06-05

我有一个类分为两个部分文件,如下所示:

public partial class PersonRepository : BaseRepository<Person>
{
    public static readonly string ColumnID = "ID";
    ...

and

public partial class PersonRepository : BaseRepository<Person>
{
    public List<Person> GetByCompany(int companyID, string sortExpression = ColumnID)
    {
    ...

但编译器一直说sortExpression“必须是编译时常量”。对我来说,这似乎是一个完美的编译时常量,所以我不明白问题出在哪里。


不,表达PersonRespository.ColumnID不被归类为编译时常量。表达式“ID”是,但这不是您用作默认参数的内容。

特别是,如果ColumnID是“只是一个普通字段”,那么对它的任何引用都将被解析as字段 - 因此,如果您编译引用该字段的程序集,则更改值并重建包含的程序集PersonRepository,参考组件will看到那个变化。

如果您将声明更改为:

 public const string ColumnID = "ID";

then it is编译时常量表达式。这意味着在我们之前的场景中,常量的值被烘焙到引用它的任何代码中 - 并且稍后更改该值,而无需重新编译该引用代码won't更改该引用代码使用的值。

有关什么算作常量表达式的更多详细信息,请参阅 C# 4 语言规范的第 7.19 节。

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

可选参数“必须是编译时常量” 的相关文章

随机推荐

  • 如何将 STOMP 客户端连接到 Wildfly?

    我想向 STOMP 客户端公开我的 WildFly 服务器 但我还没有找到任何最近的样本 据我了解 最近 WildFly 版本中的所有通信都通过单个套接字 默认情况下监听 8080 我需要更改任何配置还是开箱即用 任何指示表示赞赏 我使用的
  • 用于选择 querySelector 中当前元素的 CSS 伪选择器可用于同级 (+) 或一般同级 (~) 选择器? [复制]

    这个问题在这里已经有答案了 如果我有这个 HTML div class elem div class child div div div class sibling div 和JS let elem document querySelect
  • Django 模板变量从 {% for %} 循环到 Javascript

    这是一个迭代记录的 Django 模板 每条记录都包含一个由 JS 函数填充的 div 为了让 JS 知道要做什么 它需要从每次 for 循环迭代中获取一个变量并使用它 我不知道具体如何实现这一目标或是否可能 我不知道 也许记录在单独的 J
  • 在R中使用plotly在轴标题中换行和下标

    我刚开始使用plotly对于 R 中的一些交互式散点图 并且在轴标签上遇到困难 通常我设计我的情节ggplot2然后使用ggplotly函数来转换它们 但这有时由于某种原因非常慢 所以我想直接在中创建我的图plotly 我现在尝试更改轴标题
  • 为什么我在 Java 中收到有关“可能丢失精度”的警告?

    class Test public static void main String args short s 2 s1 200 s2 s2 s s1 error possible loss of precision System out p
  • Rails 3.1 中的嵌套表单

    我在嵌套表单方面遇到问题 rails 3 1 在应该渲染 fields for 块时不渲染 fields for 块 例如 在编辑现有记录时 由于我对自己的英语不够自信 我制作了一个小示例应用程序 新行动 def new manga Man
  • 在 MVC 类上创建主键字段

    我是 MVC 和 C 新手 我只是偶然发现它并发现它很有趣 我遇到了一个不允许我继续的问题 这是我的代码 using System using System Collections Generic using System Linq usi
  • 如何搭建qtwayland?

    我花了一整天的时间尝试使用QtWayland Compositor 1 0在 Qt 创建者中 我已经遵循了从那里开始的所有步骤https wiki qt io QtWayland https wiki qt io QtWayland但我收到
  • 如何根据值扩展数据框? [复制]

    这个问题在这里已经有答案了 我有以下输入数据框 df lt data frame x c a b c y c 4 5 6 from c 1 2 3 to c 2 4 6 df x y from to 1 a 4 1 2 2 b 5 2 4
  • C++ - 模板专业化和部分专业化

    我一直在互联网和 stackoverflow 上寻找具体的答案 但我似乎找不到 我必须创建一个通用类 然后实现特定的功能 我的具体说明是 您需要使用模板表达式参数以及模板类专业化和部分专业化 我有一个模板类 template
  • 为什么 git-cherry pick 没有说要提交什么?

    我对以下问题进行了很多搜索 但无法获得任何实质性信息 我创建了一个临时分支 202116 并尝试对 gerrit 202116 进行挑选 并收到以下消息 为什么我无法挑选此提交以及为什么会收到此错误 lt gt git fetch ssh
  • 使用边距与填充? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我最近开始自己在线学习周三开发 并且是这个领域的新手 所以对我的基本查询表示歉意 我知道边距和填充之间的区别 用逻辑术语 但不太确定 何时应该使
  • 将 Webhook 发布到现有线程

    尝试弄清楚如何在 Hangouts Chat 中将 webhook 消息发布到聊天室中的现有线程 当我发布到 webhook URL 时 我收到以下响应 name spaces 123123123123 messages 128391203
  • 如何使用 xmlrpc 将 html 内容发布到 wordpress?

    我有一个脚本可以使用 xmlrpc 将一些数据发布到 WordPress 如果我在正文中使用一个简单的字符串 例如 这是一个测试 它就可以正常工作 但是 如果其中包含任何 HTML 格式 则在尝试添加帖子时会严重损坏 如何使用 xmlrpc
  • 防止使用 golang 服务器访问文件夹中的文件

    我在 golang 中有一个服务器可以处理这样的文件夹路径 fs http FileServer http Dir assets http Handle Images fs http ListenAndServe 8000 nil 但在这个
  • 此插件导致 Outlook 启动缓慢

    我正在使用 C NET 4 5 开发 Outlook Addin 项目 但部署后 有时 Outlook 会禁用我的插件 并显示此消息 这个插件导致 Outlook 启动缓慢 我不知道我的插件出了什么问题 这只有很少的代码 并且ThisAdd
  • 有什么方法可以访问 makeActiveBinding 安装的函数吗?

    标题基本上说明了一切 如果我这样做 makeActiveBinding x function runif 2 GlobalEnv x 1 0 7332872 0 4707796 x 1 0 5500310 0 5013099 那我有什么办法
  • 如何使用 Java Streams API 将 Map 列表与列表值合并?

    我怎样才能减少Map
  • Pandas 中每列的曲线拟合 + 外推值

    我有一个包含大约 300 列的数据集 每一列都与深度相关 Pandas DataFrame 的简化版本看起来像这样 import matplotlib pyplot as plt import numpy as np import pand
  • 可选参数“必须是编译时常量”

    我有一个类分为两个部分文件 如下所示 public partial class PersonRepository BaseRepository