草庐IT

c# - 将 'enum' 的数组转换为 'int' 的数组

我正在尝试将Enum数组转换为int数组:publicenumTestEnum{Item1,Item2}int[]result=Array.ConvertAll(enumArray,newConverter(Convert.ToInt32));由于某些原因,Convert.ToInt32在Array.ConvertAll中使用时不起作用,因此我不得不进行一些更改:int[]result=Array.ConvertAll(enumArray,newConverter(ConvertTestEnumToInt));publicstaticintConvertTestEnumToInt(Te

c# - System.MissingMethodException Int32 System.Environment。 get_CurrentManagedThreadId() 方法

什么会导致以下异常?System.MissingMethodExceptionInt32System.Environment.get_CurrentManagedThreadId()此方法调用似乎是由C#编译器生成的,用于产生IEnumerable的方法.安装了.NETFrameworkv4.0x86并为v4.0AnyCPU编译了二进制文件。 最佳答案 CurrentManagedThreadId是.NET4.5属性,因此您需要4.5才能运行代码。参见Iteratorblocks,missingmethods,and.NET4.5分

c# - 为什么类型 "int"永远不等于 'null' ?

intn==0;if(n==null){Console.WriteLine("......");}表达式(n==null)的结果总是false是真的吗int类型的值永远不等于int?类型的null(见下面的警告)WarningCS0472Theresultoftheexpressionisalways'false'sinceavalueoftype'int'isneverequalto'null'oftype'int?' 最佳答案 如果你想让你的整数变量允许空值,声明它是一个nullabletype:int?n=0;请注意int之后

c# - 在 C# 中转换为 'float' 时,“const float”值不同于 'int'

你们谁能解释为什么会这样?staticvoidMain(){constfloatxScaleStart=0.5f;constfloatxScaleStop=4.0f;constfloatxScaleInterval=0.1f;constfloatxScaleAmplitude=xScaleStop-xScaleStart;constfloatxScaleSizeC=xScaleAmplitude/xScaleInterval;floatxScaleSize=xScaleAmplitude/xScaleInterval;Console.WriteLine(">constfloat{0},

C# 方法解析,long 与 int

classfoo{publicvoidbar(inti){...};publicvoidbar(longi){...};}foo.bar(10);我希望这段代码会给我一些错误,或者至少是一个警告,但事实并非如此......调用了哪个版本的bar(),为什么? 最佳答案 正在调用bar的int版本,因为10是一个int文字,编译器将寻找与输入变量最匹配的方法。要调用长版本,您需要像这样指定一个长文本:foo.bar(10L);这是埃里克·利珀特(EricLippert)发表的一篇关于更复杂版本的方法重载的文章。我会尝试解释它,但他做得

c# - 定义一个像 List<int,string> 这样的列表?

我需要一个两列的列表,例如:Listmylist=newList();它说usingthegenerictypeSystem.collection.generic.Listrequires1typearguments. 最佳答案 根据您的需要,您可以在此处进行一些选择。如果您不需要进行键/值查找并希望坚持使用List,你可以利用Tuple:List>mylist=newList>();//addanitemmylist.Add(newTuple(someInt,someString));如果您确实想要键/值查找,您可以转向Dicti

c# - 在 C# 中,为什么 "int"是 System.Int32 的别名?

既然C#支持Int8、Int16、Int32和Int64,为什么语言的设计者会选择将int定义为Int32的别名,而不是允许它根据native架构认为是word的内容而变化?我对int的行为方式没有任何特殊需求,我只是出于纯粹的百科全书兴趣。我认为可以想象存在一个64位RISC架构,它最有效地只支持64位数量,而32位数量的操作将需要额外的操作。在程序坚持使用32位整数的世界中,这样的体系结构将处于不利地位,这是另一种说法,即C#成为future的语言,从根本上阻止硬件设计人员想出这样的future的架构。StackOverflow不鼓励猜测答案,因此请仅在您的信息来自可靠来源时才回答

c# - 如何将通用枚举转换为 int?

我有一个看起来像这样的小方法:publicvoidSetOptions()whereT:Enum{inti=0;foreach(TobjinEnum.GetValues(typeof(T))){if(i==0)DefaultOption=newListItem(obj.Description(),obj.ToString());i++;DropDownList.Items.Add(newListItem(obj.Description(),obj.ToString()));}}基本上,我从一个枚举中填充一个下拉列表。Description()实际上是枚举的扩展方法,所以T肯定是一个en

c# - short null 值为什么要转换成 int null 值来和 null 比较?

当我比较可为null的短值时,编译器首先将它们转换为整数以与null进行比较。例如,考虑这个简单的代码:short?cTestA;if(cTestA==null){...}它被编译器转换为:short?CS$0$0001=cTestA;int?CS$0$0002=CS$0$0001.HasValue?newint?(CS$0$0001.GetValueOrDefault()):null;if(!CS$0$0002.HasValue){...}这适用于所有.NET版本,包括.NET4。我在这里错过了什么?仅针对HasValue检查进行这种双重转换的原因是什么?跟进我希望编译器做的是使用.

c# - 在 C# 中将 int[] 转换为 byte[]

从长远来看,我知道如何做到这一点:通过创建一个必要大小的字节数组并使用for循环从int数组中转换每个元素。我想知道是否有更快的方法,因为如果int大于sbyte,上面的方法似乎会中断。 最佳答案 如果您想要按位复制,即从一个int中获取4个字节,则使用Buffer.BlockCopy:byte[]result=newbyte[intArray.Length*sizeof(int)];Buffer.BlockCopy(intArray,0,result,0,result.Length);不要使用Array.Copy,因为它会尝试转换