草庐IT

分配数

全部标签

c# - 我可以通过在 C# 中通过引用传递 DateTime 参数来减少内存分配吗?

在C#中,与按值传递相比,将DateTime引用作为参数传递给函数时,内存分配是否有显着减少?intGetDayNumber(refDateTimedate)对比intGetDayNumber(DateTimedate)函数内的代码在任何情况下都不会修改日期。 最佳答案 DateTime是一个8字节的结构。ref有4或8个字节,具体取决于您的目标架构。所以最多只能节省4个字节的堆栈内存,这是完全不相关的。甚至有可能ref阻止了一些优化,例如将DateTime放在寄存器中,从而实际上增加了内存使用。这是一个明显的过早优化案例。不要这样

c# - 如何创建 5 个按钮并动态分配各个点击事件?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭6年前。Improvethisquestion我需要在Windows窗体上动态创建5个按钮,每个按钮都应该响应点击事件。我试过了,但所有按钮都响应同一事件。

c# - 如果在 linq 查询中值为 null,如何分配空字符串?

我有以下LINQ查询来获取一组数据。varfields=fromrowindatarowsfromfieldinrowfromcolincolumnnameswherefield.Key==colselectnew{ColumnName=col,FieldValue=field.Value};问题是我处理此查询后字段的代码失败,因为某些行的field.Value返回null。我的目标是在检测到null时分配一个空字符串。类似iffield.Value==null,thenfield.Value=""是否可以在linq查询中这样做? 最佳答案

c# - 确定堆上对象的对象分配发生的位置

是否有任何工具可以从正在运行的应用程序中获取堆转储,并根据对象在源代码中的创建位置确定/分组对象?无需更改源代码,最好是免费的。 最佳答案 例如,来自ANTS的.NETMemoryProfiler怎么样。也许是CLRProfiler。 关于c#-确定堆上对象的对象分配发生的位置,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6428299/

c# - 分配相同大小的对象是否会提高 GC 或 "new"性能?

假设我们要创建许多字节数组类型的小对象。大小各不相同,但总是低于1024字节,比如780,256,953....如果我们始终只分配bytes[1024],并且只使用需要的空间,是否会随着时间的推移提高operatornew或GC效率?UPD:这是短暂的生命对象,为解析二进制协议(protocol)消息而创建。UPD:在这两种情况下,对象的数量是相同的,只是分配的大小发生了变化(随机vs.总是1024)。在C++中,由于碎片化和C++的新性能,这很重要。但是在C#中.... 最佳答案 Willitimproveoperatornewo

c# - C#中const的内存分配

我使用时内存是如何分配的:publicclassMyClass{publicconststringmyEVENT="Event";//Othercode} 最佳答案 好吧,它是一个编译时常量-所以如果您从其他程序集中使用它,“事件”将被复制到那些其他程序集的IL中。是否进行内部交叉汇编取决于CLR设置IIRC。但是,如果您担心是否会为MyClass的每个实例获取一个新字符串或一个新字符串变量,则不需要担心-const意味着static。简而言之,除非您有大量大量常量(或大量字符串常量),否则不会给您带来问题。

c# - 使用 MVC SimpleMembership 分配角色

我正在通过Nuget在MVC3中试用“SimpleMembership”,并且已经下载了要玩的示例。问题是我无法弄清楚如何将角色分配给特定用户。在标准MVC成员资格中,您可以使用类似的东西:Roles.AddUserToRole(model.UserName,"StandardUser");但是,SimpleMembership似乎只有一种公开角色的方法(除非我很笨!),即publicvoidRequireRoles(paramsstring[]roles){WebSecurity.RequireRoles(roles);}必须有一个简单的方法,因为下表是作为此nuget包的一部分创建

c# - 在调用方法时使用 Moq 分配属性值

我正在尝试使用Moq在调用方法时分配属性。类似的东西:Mockmock=newMock();mock.Setup(x=>x.Start()).AssignProperty(y=>y.Enabled=true);是否可以在调用方法时使用Moq设置预期的属性值 最佳答案 我假设您实际上是在尝试在调用方法时在Mock上执行一个新的Setup()?如果是这样,您应该能够通过回调来完成此操作,如下所示:Mockmock=newMock();mock.Setup(x=>x.Start()).Callback(()=>mock.SetupGet(

c# - 此列表分配如何工作?

我看过这个代码示例,它看起来像是将数组初始值设定项分配给列表。我认为它行不通,但不知何故它编译。{}不是数组初始值设定项吗?Children是IList类型。如果没有花括号前的“新列表”,它如何工作?varnameLayout=newStackLayout(){HorizontalOptions=LayoutOptions.StartAndExpand,Orientation=StackOrientation.Vertical,Children={nameLabel,twitterLabel}};编辑:当我尝试Children=newList{nameLabel,twitterLabe

c# - .NET 线程 - 分配需要锁

我有一些多线程代码,我想提高一点性能,所以我想知道是否可以摆脱锁。我有一个现场成员:privateIListstatus;它在这样的线程中更新:status=GetUpdatedStatus();它在另一个线程中使用,如下所示:varcurrentStatus=status;所以问题是,如果没有锁定两个赋值语句,上面的代码会产生任何问题吗?我想我能看到的唯一情况是currentStatus为null,但我再次希望分配在某种程度上是线程安全的(它是否已更改引用) 最佳答案 你是对的。您将看到作业,或者看不到它。引用的分配(和读取)始终