草庐IT

c# - 为什么 Int32.TryParse 在无法转换时重置 out 参数?

如果我运行这个C#代码intrealInt=3;stringfoo="bar";Int32.TryParse(foo,outrealInt);Console.WriteLine(realInt);Console.Read();我得到0。我想知道为什么!因为我找不到任何原因。这迫使我为每次解析创建临时变量。所以,请!宇宙大码农,赐教! 最佳答案 是“out”,不是“ref”。在方法内部,它必须分配它(无需先阅读它)以满足“out”的含义。实际上,“out”是一个语言问题(不是框架问题)——因此托管C++实现可能会忽略这一点……但遵循它

c# - 在 C# 中拆分一个 6 位整数

我有一个6位整数,比方说我要拆分成“153060”inta=15(前2位数字),intb=30(第二个2位数),intc=60(第三个2位数),首先想到的是将int转换为字符串,使用SubString(或变体)拆分它,然后再转换回int。不过,这似乎是一种非常低效的方法。谁能推荐一种更好/更快的方法来解决这个问题?谢谢!附加信息:拆分int的原因是因为6位整数表示HHMMSS,我想用它来创建一个新的DateTime实例:DateTimemyDateTime=newDateTime(年,月,日,a,b,c);但是,用户字段只能接受整数。 最佳答案

c# - 为什么 Int32 类型的最大值为 2³¹ − 1?

我知道Int32长度为32位(4字节)。我假设它有2³²个值,但由于其中一半必须小于零,我想这与此有关。我想知道为什么Int32的最大正数是2³¹−1。 最佳答案 这个最高有效位用于对符号进行编码(1表示负数),因此只有31位可用于实际值。Int32.MaxValue=2^31-1=011111111111111111111111111111111=000000000000000000000000000000010=00000000000000000000000000000000-1=111111111111111111111111

c# - 如何有效地生成组合而不重复它们之间的特定数字

如何有效地生成不重复的数字组合集合,其中所有集合彼此之间都有特定的独特数字。*注意:范围编号始终从0开始。例子:范围编号(numbers[])=0,1,2,3,4,5,6,7==>总共8个数字(n)。组合(k)=5个数字。不同的数字(nD)=2个数字。结果:01234012560135701467023670245703456有7种有效组合它是如何组装的:因为我不善言辞,所以让我把它们想象成这样:解释一下他们独特的数字:我们可以将它们汇总到下表中:到目前为止我取得了什么我目前的解决方案效率很低(或者你可以称之为蛮力)。*首先我为每个组合循环。==>kCn*然后我为有效组合创建一个临时文

c# - 优化此 C# 算法

这是一道算法题,我有解法但是有性能问题。QuestionDescriptionTherearenvariablesandmrequirements.Requirementsarerepresentedas(xInputFormat:Firstlineoftheinputcontainstwointegersnandm.Thenfollowingmlineseachcontaining2space-seperatedintegersxandy,whichmeansarequirement(xOutputFormat:Outputtheanswerinoneline.Constraints

c# - 为什么可空值序列的 Linq-to-Objects 总和本身可以为空?

像往常一样,int?表示System.Nullable(或System.Nullable`1[System.Int32])。假设您在内存中有一个IEnumerable(例如List),我们称它为seq;然后你可以找到它的总和:varseqSum=seq.Sum();当然这会转到扩展方法重载int?IEnumerable.Sum()(documentation)这实际上是System.Linq.Enumerable上的静态方法.但是,该方法永远不会返回null,那么为什么返回类型声明为Nullable?即使在seq的情况下是一个空集合,或者更一般地说,是一个所有元素都是null的集合类型

c# - 循环从 0 开始比循环从 1 开始快?

看看这两个循环constintarrayLength=...版本0publicvoidRunTestFrom0(){intsum=0;for(inti=0;i版本1publicvoidRunTestFrom1(){intsum=0;for(inti=1;i版本2publicvoidRunTestFrom2(){intsum=0;for(inti=2;iarrayLength=50的结果是(来自多次采样编译的X64的平均值):版本0:0.998s(平均0.001s的标准误差)总循环数:312500000版本1:1.449秒(平均0.000秒的标准误差)总循环次数:282475249版本2

c# - 通过反射调用 this[int index]

我尝试为MicrosoftOffice实现一个基于反射的后期绑定(bind)库。OfficeCOM对象的属性和方法调用方式如下:Typetype=Type.GetTypeFromProgID("Word.Application");objectcomObject=Activator.CreateInstance(type);type.InvokeMember(,,null,comObject,newobject[]{});InvokeMember是唯一可能的方法,因为Type.GetMethod/GetProperty无法正确处理COM对象。可以使用InvokeMember调用方法和属

c# - System.Timers.Timer 仅提供每秒最多 64 帧

我有一个应用程序使用System.Timers.Timer对象来引发由主窗体(WindowsForms,C#)处理的事件。我的问题是,无论我将.Interval设置多短(甚至设置为1毫秒),我每秒最多只能获得64次。我知道Forms计时器有55毫秒的精度限制,但这是System.Timer变体,而不是Forms。该应用占用1%的CPU,因此它绝对不受CPU限制。所以它所做的就是:将计时器设置为1&nsp;ms当事件触发时,递增_Count变量再次将其设置为1&nsp;ms并重复_Count每秒最多递增64次,即使没有其他工作要做。这是一个“回放”应用程序,它必须复制传入的数据包,它们之

c# - 在 .NET 应用程序中检测重定向控制台输出中的关闭管道

.NETConsole类及其默认的TextWriter实现(可作为Console.Out隐含在例如Console.WriteLine中())当应用程序将其输出通过管道传输到另一个程序时,不会发出任何错误信号,并且另一个程序在应用程序完成之前终止或关闭管道。这意味着应用程序可能会运行超过必要的时间,将输出写入黑洞。如何检测重定向管道另一端的关闭?更详细的解释如下:这里有一对演示问题的示例程序。Produce相当慢地打印大量整数,以模拟计算效果:usingSystem;classProduce{staticvoidMain(){for(inti=0;iConsume只读取前10行输入然后退