草庐IT

c# - 对于 Int32 值太大或太小

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Whatisthemaximumvalueforaint32?Mobileno=Convert.ToInt32(txmobileno.Text);插入数据库时​​出现错误

c# - 从具体化 'System.Guid' 类型到 'System.Int32' 类型的指定转换无效

从物化“System.Guid”类型到“System.Int32”类型的指定转换无效。我们有几个WCF服务,它们具有Multiple并发模式和Single的InstanceContextMode。我们的架构专注于使用基于构造函数的依赖注入(inject)的松散耦合模型。这又是使用Unity2.0实现的(每个服务的web.config都在统一容器部分中定义的接口(interface)和类型之间进行映射)。我们的依赖项之一是使用EntityFramework4与MSSqlServer通信的DAL程序集(数据访问层)。与数据库对话的类也包含在统一映射中。当我们运行集成测试时,一切都很好。但是

c# - 使用小数据类型(例如 short 而不是 int)是否会减少内存使用量?

我的问题基本上是关于C#编译器如何处理小型数据类型的内存分配。我确实知道,例如像add这样的运算符是在int上定义的,而不是在short上定义的,因此计算将被执行,就好像shorts是int成员一样。假设如下:没有与选择short作为数据类型相关的业务逻辑/验证逻辑我们不会对不安全的代码做任何事情是否尽可能使用short数据类型来减少我的应用程序的内存占用,是否建议这样做?或者使用short等不值得付出努力,因为编译器会分配int32的全部内存量,并在进行算术运算时添加额外的强制转换。任何有关假定的运行时性能影响的链接都将不胜感激。相关问题:WhyshouldIuseintinstea

c# - 使用托管代码包装器从 64 位托管代码调用 32 位非托管代码的最佳方式

随着64位机器和应用程序的普及,我遇到必须从托管64位进程调用native32位代码的情况的频率正在增加。我不想将我的应用程序标记为32位,并且我无法获得正在调用的代码的64位版本。我目前使用的解决方案是创建从进程加载的C++COM垫片,以便从64位进程进行32位调用。这种COMshim解决方案运行良好,跨进程调用由COM在幕后处理,从而最大限度地减少了这种方法的开销。不过,我想保留我们使用C#进行的所有新开发,并想知道是否有任何框架可以最大限度地减少这样做的开销。我看过IPCChannel,但我觉得这种方法不如COMshim解决方案那么简洁。谢谢,埃德 最

C# int 到标志枚举

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:C#inttoenumconversion是否可以通过某种方式将int转换为标志组合枚举?所以,如果[Flags]publicenumFoo{a=0x80,b=0x40,c=...,...h=0x1,i=0};是否可以(或以某种方式可能)做FoofooInstance=(Foo)6;所以fooInstance会是00000110?谢谢!

c# - 为什么在移位 32 位值时只使用移位操作数的低五位? (例如(UInt32)1 << 33 == 2)

考虑以下代码:UInt32val=1;UInt32shift31=val它不会生成警告(关于使用大于32的类次),因此它一定是预期的行为。实际输出到生成的程序集中的代码(或者至少Reflector对代码的解释)是uintval=1;uintshift31=valIL(再次使用Reflector)是L_0000:nopL_0001:ldc.i4.1L_0002:stloc.0L_0003:ldloc.0L_0004:ldc.i4.s0x1fL_0006:shlL_0007:stloc.1L_0008:ldloc.0L_0009:stloc.2L_000a:ldloc.0L_000b:ld

c# - 为什么win32异常没有被c#异常处理机制捕获

我有一个winforms应用程序。Winforms从Program.cs开始,我们在其中定义了main()。我已将这段代码放在try-catchblock中。[STAThread]staticvoidMain(){try{Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(newfrmSplash());}catch(Exceptionex){MessageBox.Show(ex.Message);if(ex.InnerExceptio

c# - 无法将带有 [] 的索引应用于 mvc Controller 中类型为“System.Collections.Generic.ICollection<int>”的表达式

publicActionResultaddstandardpackage1(ICollectionSingleStay,ICollectionDOUBLESTAY,ICollectionTRIBLESTAY,ICollectionFAMILYSTAY,ICollectionEXTRABED){vars=SingleStay;for(inti=0;i在for循环中,我收到类似无法将带[]的索引应用于类型表达式的错误,但我需要在for循环中,在我得到的每个中。因为基于for循环,我会将详细信息与其他集合列表绑定(bind)。请帮助我。我在varcal=Singlestay[i]中遇到错误。

c# - Random(int seed) 保证什么?

我正在从事一个项目,该项目依赖于为用户随机分配(没什么花哨的,只是统一的)更大集合的子集。每个用户都有一个从集契约(Contract)构到整数的唯一标识符。据我所知,有两种方法可以做到这一点。在用户和上述较大集合的键控元素之间创建一个数据库连接表,每个用户使用一些函数。这对我的需求来说可能有点不切实际,所以我宁愿做...在运行时通过类似的函数确定子集,但使用唯一的用户ID作为种子值,并且只将集合保存在内存中。下次需要时,它会从更大的集合中再次创建。所以我的问题是,如果我使用.NETRandom对象创建第二个使用user-id作为种子值的函数,Microsoft是否保证以后不会更改Ran

c# - 在转换为 int 之前将空字段转换为零?

在我的程序中,我循环遍历数据表以从每个字段获取数据。我的一行代码如下所示:intLYSMKWh=Convert.ToInt32(resultsDT.Rows[currentRow]["LYSMKWh"]);基本上,我只是获取单元格中的值并将其转换为int32。但是,当字段中的数据为空时,我遇到了问题。我收到有关无法将“DBNull”转换为另一种类型的无效转换错误消息。所以,我知道我可以在尝试通过执行以下操作转换它之前检查该字段的值:if(resultsDT.Rows[currentRow]["LYSMKWh"]==null){resultsDT.Rows[currentRow]["LY