相关疑难解决方法(0)

在C#中将整数转换为二进制

如何将整数转换为二进制表示?

我正在使用此代码:

String input = "8";
String output = Convert.ToInt32(input, 2).ToString();
Run Code Online (Sandbox Code Playgroud)

但它引发了一个例外:

找不到任何可解析的数字

c#

170
推荐指数
8
解决办法
32万
查看次数

在没有选中/取消选中关键字支持的情况下覆盖VB中的GetHashCode?

所以我试图弄清楚如何GetHashCode()在VB中正确覆盖大量的自定义对象.一些搜索引导我得到这个美妙的答案.

除了有一个问题:VB缺少.NET 4.0中的checkedunchecked关键字.据我所知,无论如何.因此,使用乔恩斯基特的实现,我想对具有三个主要成员一个相当简单的类创建这样一个覆盖:Name As String,Value As Int32,和[Type] As System.Type.因此,我提出:

Public Overrides Function GetHashCode() As Int32
    Dim hash As Int32 = 17

    hash = hash * 23 + _Name.GetHashCode()
    hash = hash * 23 + _Value
    hash = hash * 23 + _Type.GetHashCode()
    Return hash
End Function
Run Code Online (Sandbox Code Playgroud)

问题:即使像这样的简单对象,Int32也太小了.我测试的特定实例将"Name"作为一个简单的5个字符的字符串,并且该哈希值足够接近Int32的上限,当它试图计算哈希值(Value)的第二个字段时,它会溢出.因为我找不到粒度checked/ unchecked支持的VB等价物,所以我无法解决这个问题.

我也不想删除整个项目中的Integer溢出检查.这个东西可能...... 40%完成(我做了,TBH),我有更多的代码要写,所以我需要这些溢出检查很长一段时间.

GetHashCode对于VB和Int32 ,Jon的版本的"安全"版本是什么?或者,.NET 4.0 在某个地方有checked/ unchecked我在MSDN上很难找到吗?


编辑:
根据链接的SO问题,最底层的一个不受欢迎的答案提供了一个 …

vb.net gethashcode

24
推荐指数
3
解决办法
7094
查看次数

标签 统计

c# ×1

gethashcode ×1

vb.net ×1