草庐IT

int_void

全部标签

c# - 为什么我不能只使用 EventHandler<int> 而不是从 EventArgs 派生

EventHandler的文档说:ThesecondparameterisatypederivedfromEventArgsandsuppliesanyfieldsorpropertiesneededtoholdtheeventdata.它似乎在整个.Net文档中被普遍推荐。但事实证明我可以执行以下操作,效果很好:publiceventEventHandlerPanned;并调用事件处理程序:intvalue=10;if(Panned!=null){Panned(this,value);}在观察者方面:subject.Panned+=(sender,e)=>{Console.Write

c# - int.TryParse() 为 "#.##"返回 false

我有一个接收字符串参数并将它们转换为整数的函数。为了安全转换,使用了int.TryParse()。publicIEnumerableReportView(stringparam1,stringparam2){intstoreId=int.TryParse(param1,outstoreId)?storeId:0;inttitleId=int.TryParse(param2,outtitleId)?titleId:0;IEnumerabledetailView=newReport().GetData(storeId,titleId);returndetailView;}函数调用Repor

c# - int 是枚举的支持类型

根据thispostint是enum的支持类型。当我检查.NET的源代码时System.Enum抽象类继承自System.ValueType抽象类。但是当我检查System.Int32结构它继承自接口(interface)而不是System.ValueType.相反,当我反编译mscorlib.dll并检查Int32结构时,它说该结构的基类型为System.ValueType.但仍然检查反编译的源代码,我看不到任何关于System.ValueType的信息。这让我觉得struct关键字使声明成为auto-Sytem.ValueType,Microsoft也在这个reference中表示

c# - C# 3.5 中的 List<int> 初始化

我可以初始化一个ListlikenewList{1,2,3,4,5};然而List没有接受单个参数的构造函数。所以我试图通过调试器运行它,它似乎在调用Add方法。那么编译器如何知道调用哪个方法来添加每个单独的元素。这可能是个愚蠢的问题,但我有点困惑。谢谢 最佳答案 这是一个集合初始化器,一个C#3.0languagefeature.它需要:该类型必须实现IEnumerable(尽管它从未用于初始化)类型必须至少有一个Add方法它只是为每个术语调用Add方法。如果Add接受多个值,例如字典,您也可以使用元组。然后每一项都是{key,v

c# - 为什么 List<T>.Sort 使用 Comparer<int>.Default 比等效的自定义比较器快两倍以上?

结果使用1000万个随机列表ints(每次相同的种子,重复10次的平均值):listCopy.Sort(Comparer.Default)需要314毫秒。使用sealedclassIntComparer:IComparer{publicintCompare(intx,inty){returnxlistCopy.Sort(newIntComparer())需要716毫秒。一些变化:使用structIntComparer而不是sealedclass:771毫秒使用publicintCompare(intx,inty){returnx.CompareTo(y);}:809毫秒评论Compar

c# - 使用 Interlocked.Exchange 更新引用和 Int32

众所周知,引用在32位处理器中占用4字节内存,在64位处理器中占用8字节内存。因此,处理器保证以机器的自然字大小为增量对内存进行单次读取和写入将以原子方式执行。另一方面,Interlocked类中有2个方法:publicstaticintExchange(refintlocation1,intvalue)和publicstaticTExchange(refTlocation1,Tvalue)whereT:class那么,问题是为什么Int32和引用类型需要Interlocked.Exchange?因为它是原子的,所以仅仅使用简单的赋值不能安全地完成吗? 最佳

c# - .Net Dictionary<int,int> 在大约 6,000,000 个条目处出现内存不足异常

我正在使用Dictionary存储图像中颜色出现的频率,其中键是颜色(作为int),值是颜色在图像中出现的次数。当我处理更大/更彩色的图像时,这本词典会变得非常大。我在大约6,000,000个条目时遇到内存不足异常。这是在32位模式下运行时的预期容量吗?如果是这样,我能做些什么吗?有哪些替代方法可以跟踪这些不会耗尽内存的数据?作为引用,下面是循环遍历位图中的像素并将频率保存在Dictionary中的代码:Bitmapb;//=something...Dictionarycount=newDictionary();System.Drawing.Colorcolor;for(inti=0;

c# - 使用 LINQ 将 Dictionary<String,Int> 转换为 Dictionary<String,SomeEnum>?

我正试图找到一个LINQoneliner,它接受一个Dictionary并返回一个Dictionary....这可能不可能,但会很好。有什么建议吗?编辑:ToDictionary()是显而易见的选择,但你们中有人实际尝试过吗?在Dictionary上它的工作方式与在Enumerable上的工作方式不同...您不能将键和值传递给它。编辑#2:哦,我在这行上面有一个错字,导致编译器搞砸了。一切顺利。 最佳答案 它通过简单的转换直接工作。Dictionaryinput=newDictionary();//TransforminputDic

c# - 将列表<int> 转换为连接的整数字符串?

我有一个值为3,99,6的int数组。如何使用linq将数组转换为字符串3,99,6? 最佳答案 int[]list=new[]{3,99,6};strings=string.Join(",",list.Select(x=>x.ToString()).ToArray());编辑,C#4.0在C#4.0中,还有一个重载string.Join,最终允许传递一个IEnumerable或IEnumerable直接地。无需创建数组,也无需调用ToString(),它被隐式调用:strings=string.Join(",",list);对字符

c# - 如何将字节数组转换为 int 数组?

如何将byte数组转换为int数组?我有一个包含144个项目的字节数组,由于我缺乏经验,我尝试过的方法效率很低。如果之前有人回答过这个问题,我很抱歉,但我在任何地方都找不到好的答案。 最佳答案 简单://WhereyourBytesisaninitializedbytearray.int[]bytesAsInts=yourBytes.Select(x=>(int)x).ToArray();确保包含System.Linq和using声明:usingSystem.Linq;如果LINQ不是您的菜,您可以改用它:int[]bytesAsI