草庐IT

c# - (int)myDouble 是否与 (int)Math.Truncate(myDouble) 不同?

(int)myDouble是否与(int)Math.Truncate(myDouble)不同?有什么理由让我更喜欢其中之一吗? 最佳答案 Math.Truncate适用于需要将结果保持为double且没有小数部分的情况。如果你想把它转换成一个int,直接使用cast就可以了。编辑:供引用,这里是“ExplicitNumericConversionsTable”的相关文档。”:Whenyouconvertfromadoubleorfloatvaluetoanintegraltype,thevalueistruncated.

c# - 在 C# 中,Int64 和 long 有什么区别?

这个问题在这里已经有了答案:WhatisthedifferencebetweenStringandstringinC#?(65个答案)Whatis'long?'datatype?(6个答案)关闭6年前。在C#中,Int64和long有什么区别?例子:longx=123;Int64x=123;

c# - 从 int 转换为 float 的问题

有一个我无法理解的奇怪行为。同意float是近似值,因此即使显然返回没有小数的数字的操作也可以近似为带小数的数字。我这样做:intnum=(int)(195.95F*100);因为这是一个浮点运算,所以我得到19594而不是19595..但这是正确的。让我困惑的是,如果我这样做floatflo=195.95F*100;intnum=(int)flo;我得到了19595的正确结果。知道为什么会这样吗? 最佳答案 我想看看这是不是编译器在做数学运算,但即使你强制它,它的行为也是这样的:staticvoidMain(){inti=(int

c# - 为什么可空的模式匹配会导致语法错误?

我喜欢在nullableint上使用模式匹配,即int?:intt=42;objecttobj=t;if(tobjisint?i){System.Console.WriteLine($"Itisanullableintofvalue{i}");}但是,这会导致以下语法错误:CS1003:Syntaxerror,';',CS1525:Invalidexpressionterm')',CS0103:Thename'i'doesnotexistinthecurrentcontext.“i)”用红色波浪线标记。表达式在使用旧运算符时编译is:intt=42;objecttobj=t;if(to

c# - 将 system.array 对象转换为 int[] 字符串或其他类型的对象

我正在学习C#并试图理解它的“面向类型”方面。所以前几天我需要从一个方法中接收一个System.Array对象。然后我尝试使用它的单个对象,所以我尝试用索引来解决它。编译器不让,说System.Array对象不支持索引。但是Array不是所有数组的基类吗(System.Arrayonmsdn)?为什么int[]支持索引而Array[]不支持?下面是一些代码来演示这个问题:int[]intArray={1,2,3,4,5,6,7,8,9,10};intt;ArraysysArray;Console.WriteLine("{0}",intArray.GetType().ToString()

c# - 如何在长时间的服务器进程中显示信息丰富的实时进度数据

我有一个很长的过程可能需要1小时。这个过程由许多步骤组成,年复一年。我的主要问题是:如何在此过程中向最终用户提供信息丰富的实时进度,而不仅仅是一个虚拟加载栏。intindex=Convert.ToInt32(e.CommandArgument);booldone=false;intres=-1;intfromVal=int.Parse(gv_balance.Rows[index].Cells[0].Text);inttoVal=int.Parse(gv_balance.Rows[index].Cells[1].Text);intfinMonth=1;intfinYear=0;intEn

c# - 为什么在没有约束的泛型方法上将可为 null 的值类型与 null 进行比较会比较慢?

我遇到了一个非常有趣的情况,在泛型方法中比较可为null的类型和null比比较值类型或引用类型慢234倍。代码如下:staticboolIsNull(Tinstance){returninstance==null;}执行代码为:int?a=0;stringb="A";intc=0;varwatch=Stopwatch.StartNew();for(inti=0;i上面代码的输出是:00:00:00.187982700:00:00.000877900:00:00.0008532如您所见,将可为空的int与null进行比较比比较int或字符串慢234倍。如果我添加具有正确约束的第二个重载,

c# - 如何在 int 列表中找到满足某些条件的项目的索引?

我有一个包含项目{10、11、23、34、56、43}的int列表,我想找出所有大于23的项目的索引。这些值可以是任何顺序,所以我这样做不想对它们进行排序。Listmylist=newList{10,11,23,34,56,43};我对满足条件的所有项目的索引感兴趣,而不仅仅是满足条件的第一个项目。所以这行代码对我不起作用。intindex=mylist.FindIndex(x=>x>23); 最佳答案 varindexes=mylist.Select((v,i)=>new{v,i}).Where(x=>x.v>23).Select

c# - 为什么这个从 short 到 int 的转换会失败?

我们有一些代码可以将MicrosoftAccess数据库中的数据归档到MSSQLServer数据库中。假设我们已经从Access表中填充了一个数据读取器,并且我们正在向SqlCommand添加一个参数以准备插入,那么我们有一个失败的类型转换。这是代码:oSqlServerDbCmd_ForInsert.Parameters.AddWithValue("@Duration",(int)oReader["Duration"]);oReader中的字段实际上是一个AccessInteger,在C#中是一个short。如果我们在这里转换为short就没有问题。但是,如果我们转换为int,代码将

c# - 为什么 .NET group by 在 buckets 数量增长时(非常)慢

给定这段简单的代码和1000万个随机数数组:staticintMain(string[]args){intsize=10000000;intnum=10;//increasenumtoreducenumberofbucketsintnumOfBuckets=size/num;int[]ar=newint[size];Randomr=newRandom();//initializewithrandumnumbersfor(inti=0;ii/num);varl=group.Count();s.Stop();Console.WriteLine(s.ElapsedMilliseconds);