在构造函数中增加唯一的 ID 号

2024-04-21

我正在 C# 中处理一个对象,我需要该对象的每个实例都有一个唯一的 id。我的解决方案只是在类中放置一个名为 idCount 的成员变量,并在构造函数中放置:

objectID = idCount;
idCount++;

我认为这可以解决我的问题,但似乎 idCount 永远不会增加,即使构造函数被多次调用。例如,如果 idCount = 1,则所有对象的 objectID 仍为 1。为什么 idCount++ 不起作用?

任何帮助,将不胜感激。如果我的解释不够充分,我很抱歉,我不知道还能如何解释。


您的类中需要一个静态属性,但是,如果您希望每个对象都包含其创建时使用的 id,则需要将其分配给类中的实例变量。

另外,如果您同时更新多个实例,您将需要在计数器上使用 Interlocked.Increment :

    public class Foo
    {
        private static int m_Counter = 0;

        public int Id { get; set; }

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

在构造函数中增加唯一的 ID 号 的相关文章

  • 在 C/C++ 中使用单个初始化来初始化具有相同值的多个指针

    我想在 C C 中使用单个赋值运算符声明两个或多个具有相同值的指针 以下代码是一个示例 List a NULL List b NULL List c NULL 一行中是否有等效项 编辑 为了澄清 我正在寻找两种语言的答案 我使用 斜杠 来区
  • 使用 Moq 模拟实体框架 6 ObjectResult

    如何使用 Moq 模拟 Entity Framework 6 ObjectResult 以便对依赖 EF 数据库连接的代码进行单元测试 沿着这些思路阅读了大量的问题和答案 并从我所读到的内容中收集了许多有价值的信息 我已经实现了我认为相当优
  • 如何修改s_client的代码?

    我正在玩apps s client c in the openssl源代码 我想进行一些更改并运行它 但是在保存文件并执行操作后 我的更改没有得到反映make all or a make 例如 我改变了sc usage函数为此 BIO pr
  • 如果变量的值在编译时已知/未知,则进行专门化

    如何在编译时 在实际编译和运行程序之前 其参数之一的值已知 未知的情况下专门化模板函数 我还不知道怎么办 idea 1 include
  • 访问 Linux 线程(pthreads)的本地堆栈

    我目前正在实现一个使用多线程但对总内存消耗有要求的应用程序 我希望有一个主线程执行 I O 并有几个工作线程执行计算 目前 我在主堆栈上有几个可供工作人员访问的数据结构 我使用 OpenMP 进行工作分配 由于主 工作者模式不能很好地与 O
  • 为什么 C# 中没有“fieldof”或“methodof”运算符? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 它们可以如下使用 FieldInfo field fieldof string Empty MethodInfo method1 methodo
  • 软件预取手动指令合理的场景

    我读过有关 x86 和 x86 64 Intel 的内容gcc提供特殊的预取指令 include
  • 在 C++ 中从 std::string 转换为 char *

    我正在使用 VS2012 C 我需要将 std string 转换为 char 但我在网上找不到任何材料来提供有关如何执行此操作的任何指导 任何代码示例和建议将不胜感激 Use std string bla bla char blaptr
  • 在 C# 中使用 VB6 字符串数组

    我有 旧的 VB6 代码 我想从 C 代码中使用它 这有点类似于这个问题 https stackoverflow com questions 23507416 passing string array from vb6 to c net 但
  • “马来半岛标准时间”的时区问题

    我有一个在 C 上运行以下代码的程序 TimeZoneInfo localZone TimeZoneInfo Local string timeZone TimeZoneInfo FindSystemTimeZoneById localZo
  • C# 是否可以中断 ThreadPool 内的特定线程?

    假设我已将一个工作项排入队列ThreadPool 但是如果没有要处理的数据 从BlockingQueue 如果队列为空并且队列中不再有工作 那么我必须调用Thread Interrupt方法 如果我想中断阻塞任务 但是如何用 a 做同样的事
  • Linq 中不区分大小写的“包含”

    我有一个 mvc 项目 我在其中使用 linq 在我的数据库中有一些记录 例如 Someth ing SOmeTH ing someTh ing SOMETH ING someTH ING 我想做这个 SELECT FROM dbo doc
  • 无法在 UWP 中调试 .NET Standard 2.0 DLL

    我创建了一个新的 Xamarin Forms 解决方案 升级了所有 NuGet 确保 UWP 版本的目标版本为 16299 并确保 NET Standard 项目的目标版本为 2 0 我运行了该项目并能够很好地调试 NET Standard
  • 用更有意义的文本替换 GCC 输出中的 a-hats [重复]

    这个问题在这里已经有答案了 可能的重复 为什么 gcc 的所有错误消息中都有 https stackoverflow com questions 547071 why does gcc have a in all its error mes
  • 在 C 中使用 fgets 和 strcmp [重复]

    这个问题在这里已经有答案了 我试图从用户那里获取字符串输入 然后根据他们输入的输入运行不同的函数 例如 假设我问 你最喜欢的水果是什么 我希望程序根据他们输入的内容进行评论 我不知道该怎么做 这是我到目前为止所拥有的 include
  • 错误LNK2001:无法解析的外部符号公共:静态类[重复]

    这个问题在这里已经有答案了 我不明白为什么我会收到这个错误 任何人都可以伸出援手吗 我需要在头文件中声明VideoCapture捕获并在Video cpp中调用它 Video h class Video public static Vide
  • 如何将十进制整数转换为十六进制整数? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions cout lt
  • C 中的堆错误

    我知道这确实很一般 但当我在 Visual C 2008 Express 中运行 c 文件时 我得到 this 见下文 当我打电话时会发生这种情况malloc 以我的工作为例 我动态地正确分配内存 HEAP Code exe HEAP 释放
  • 在 Ubuntu 上用 C 项目编译和链接 GTK 3

    我相信这不是重复的问题 在发布此问题之前我已经看过所有问题 答案 我想我这里的情况有所不同 我使用Ubuntu 12 04并下载GTK 2 和 3 我从 GNOME 网站复制了一个简单的 GTK 源代码 但是当我在终端中使用这个命令时 gc
  • 文件嵌套时嵌入资源名称丢失扩展名

    我有一些脚本存储在我标记为嵌入式资源的文件中 我将每个文件嵌套在其关联的下面 cs文件 不幸的是 由于某种原因 当您以这种方式嵌套文件时 嵌入的资源名称会丢失文件扩展名 这意味着在运行时我无法识别哪些嵌入式资源是脚本 哪些不是脚本 对此我能

随机推荐

  • 我一直在尝试找到一种方式来展示两者gifs and videos mp4 ogg webm 在同一个标 签内 所以 如果在一个
  • 请描述您在尽量减少使用全局变量方面的挣扎[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ReplayKit 获取视频而无需转到 RPPreviewViewController

    我正在使用 ReplayKit 但我的问题是我需要获取视频 或临时视频 而不必通过 RPPreviewViewController 我正在使用以下内容 但必须使用 RPPreviewViewController 还有其他方法吗 void s
  • Windows 开箱即用支持的语言

    我被要求为一组 Windows 机器 我认为是 XP 编写一个 非常 简单的程序 如此简单以至于语言的选择并不是真正的问题 但是 我希望能够分发直接在 Windows 计算机上运行的二进制文件 脚本 而不需要预先安装任何解释器或虚拟机 我正
  • 如何使用 PKCS11Interop 管理网络故障并避免错误

    在 Safenet HSM 上使用 PKCS11Interop 时 出现此错误 方法 C OpenSession 返回 2147484548 在我的文档中 错误是 CKR SMS ERROR 安全消息系统的一般错误 可能由 HSM 故障或网
  • 如何在 php5/ubuntu 中安装 pspell?

    我正在尝试在 Ubuntu 中安装适用于 PHP 5 的 pspell 我已经安装了运行 pspell 所需的 aspell 库 如图所示here http www php net manual en pspell requirements
  • 如何在.NET中针对不同环境使用不同的.settings文件?

    NET 允许您使用 settings 文件来管理应用程序设置 我想单独存储生产 开发和测试设置 我可以这样做 EnvironmentSettings environmentSettings get the current environme
  • 如何在触摸事件上移动画布中的 ShapeDrawable

    我正在尝试在 Android 中实现绘图应用程序 用户应该能够选择和移动绘制的形状 目前我已经在绘图画布上静态绘制了一些矩形和文本 View mDrawingCanvas new View mContext ShapeDrawable re
  • 如何使用 Seaborn 修改 Violinplot 的边缘颜色

    我正在尝试更改 Seaborn 中小提琴的边缘颜色 下面的代码对我有用 ax sns violinplot data df x y SleepAmount hue Thr palette my pal split True linewidt
  • 用空元素拆分 Java 中的字符串

    我正在逐行读取 csv 文件 一行可以如下所示 String str 10 1 现在我想根据 来分割 String splitted str split 现在的问题是 这只会产生 2 个元素 但我想要 5 个元素 前两个元素应包含 10 和
  • 如何以编程方式更改 Windows 7 Aero/窗口边框颜色?

    我正在考虑制作一个程序 根据电池电量改变 Windows 7 的航空颜色 我对 C 相当陌生 我想知道如何以编程方式更改 Windows 7 Aero 我有这个代码 DllImport dwmapi dll EntryPoint 127 P
  • IllegalArgumentException:找不到片段 id 的视图

    正在抛出此异常 引起原因 java lang IllegalArgumentException 找不到片段 MainActivityFragment 37dff01 1 id 0x7f0e006b FFTAG 的 id 0x7f0e006b
  • 将nodejs应用程序部署到谷歌云平台[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我注册了谷歌云平台的免费试用 但我被卡住了 我的应用程序是一个使用express的节点服务器 它需要连接
  • 根据 $_POST 值填充字段

    我正在寻求有关我试图填写的表格的帮助 我通常会使用 onChange 函数 但我认为这不是一个选择 基本上我有一个
  • Spring Boot 外部 jar 未加载

    我有一个带有 spring boot 的 java 项目 我需要从外部文件夹加载 application properties 和依赖项 jar 我通过在类路径中使用 application properties 进行测试 并且 loade
  • 如何使用 Quartz2D 绘制可动画的标尺?

    我想用 Quartz2D 画一把简单的尺子的线条 仅供练习 由于我不知道如何在 iPhone 上以编程方式制作矢量图形 也许有人可以给我指点一个好的入门教程 正如普拉门指出的那样 石英 2D 文档 https developer apple
  • 由于级联触发器更新该行,该行未被删除

    我在删除表中的行时遇到问题 该表具有调用第二个表的触发器的触发器 该触发器更新第一个表中的行 这是描述 Table A id b table count Table B id a table id fk 表 A 有一个 BEFORE DEL
  • 我想在 Firebird 上获得 unix 时间

    我想在 firebird 中获取时间 类似于 Javascript 上的 GetTime 我已经创建了一个 但每天的时差增量并不那么准确 CREATE PROCEDURE GETTIMEINMILLISECONDS RETURNS MILL
  • Tomcat 集群环境中的 JDBC 连接池

    我对此相对很陌生 但我设置了一个 Tomcat 集群 使用mod proxy来自httpd 和会话复制 单独的redis服务器 以实现容错 我对这个设置有几个问题 我的应用程序 spring hibernate 每个用户都有不同的数据库 所
  • 在构造函数中增加唯一的 ID 号

    我正在 C 中处理一个对象 我需要该对象的每个实例都有一个唯一的 id 我的解决方案只是在类中放置一个名为 idCount 的成员变量 并在构造函数中放置 objectID idCount idCount 我认为这可以解决我的问题 但似乎