当前位置:  开发笔记 > 编程语言 > 正文

在实例化时提供类唯一ID:.Net

如何解决《在实例化时提供类唯一ID:.Net》经验,为你挑选了1个好方法。

每次实例化一个新的时候,我想给一个类一个唯一的ID.例如,对于一个名为Foo的类,我希望能够执行以下操作

dim a as New Foo()
dim b as New Foo()

并且a将获得唯一ID并且b将获得唯一ID.id只需要在运行时是唯一的,所以我只想使用整数.我已经找到了一种方法来做到这一点(并且这是警告)我不希望能够从任何地方更改ID.我目前关于实现此方法的想法如下:

Public Class test
    Private Shared ReadOnly _nextId As Integer
    Private ReadOnly _id As Integer
    Public Sub New()
        _nextId = _nextId + 1
        _id = _nextId
    End Sub
End Class

但是这不会编译,因为它会在_nextId = _nextId + 1上抛出错误我不明白为什么这会是一个错误(因为_Id也是readonly你应该能够改变构造函数中的只读变量.我认为这也与它共享有关.任何解决方案(希望不是kludgy hehe)或解释为什么这不起作用将被接受.重要的部分是我想要两个变量(或者如果有一种方法只有一个甚至更好,但我认为不可能)在初始化对象后是不可变的.谢谢!



1> 小智..:

此设计容易受到多线程问题的影响.我强烈建议您使用Guids作为您的ID(Guid.NewGuid()).如果您绝对必须使用整数,请查看Interlocked类.您可以将所有递增和Id逻辑包装在基类中,这样您只能在一个位置访问ID生成器.

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有