草庐IT

信号分配

全部标签

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,但我再次希望分配在某种程度上是线程安全的(它是否已更改引用) 最佳答案 你是对的。您将看到作业,或者看不到它。引用的分配(和读取)始终

c# - Fluent NHibernate 生成和分配的 ID 列

我在Web应用程序中使用FluentNHibernate进行数据持久化。我的问题...我有一个基类,它使用GeneratedBy().Identity()映射所有具有T类型ID属性(几乎总是int或GUID)的实体在应用程序启动时,我有一个Bootstrap来检查和验证所需的种子数据是否已填充。我的问题是,一些填充的种子数据需要一个特定的ID。(对应于枚举或系统用户的ID)有什么方法可以强制NHibernate使用我指定的ID提交记录,而不是使用自动生成的ID?此后对存储库的任何其他提交都可以自动生成。 最佳答案 Id(x=>x.I

c# - 如何在运行时分配数组值

假设我有一个数组,int[]i={1,2,3,4,5};我在这里为它赋值。但在我的问题中,我只在运行时获得这些值。我怎样才能将它们分配给一个数组。例如:我从用户那里得到了数组的最大大小和它们的值,现在我该如何将它们分配给数组int[]。或者我可以使用任何其他数据类型,例如ArrayList等,我可以在最后转换为Int[]吗? 最佳答案 嗯,最简单的是使用List:Listlist=newList();list.Add(1);list.Add(2);list.Add(3);list.Add(4);list.Add(5);int[]ar

C# 巨大的性能下降分配浮点值

我正在尝试优化我的代码并在其上运行VS性能监视器。这说明简单的float赋值占用了大块的算力??我不明白这怎么可能。这是TagData的代码:publicclassTagData{publicinttf;publicfloattf_idf;}所以我真正做的是:floattag_tfidf=td.tf_idf;我很困惑。 最佳答案 我再贴一个理论:可能是第一次访问td成员的cachemiss。内存加载需要100-200个周期,在这种情况下似乎占该方法总持续时间的大约1/3。验证该理论的要点:您的数据集很大吗?它打赌是。您是否以随机内存

c# - 分配引用类型时 c# 中的奇怪 stackoverflow

在进行一些花哨的代码生成时,我遇到了一个我不理解的堆栈溢出。我的代码基本上是这样的:staticTuple[]DoWork(){//[callsomemethods]Tuple[]tmp=newTuple[100];tmp[0]=newTuple("blah1",0);tmp[1]=newTuple("blah2",1);tmp[2]=newTuple("blah3",2);//...tmp[99]=newTuple("blah99",99);returntmp;}如果您使用像这里(100)这样的小数字,则一切正常。如果数字很大,就会发生奇怪的事情。在我的例子中,我尝试发出大约10K行

c# - 内存重新排序会导致 C# 访问未分配的内存吗?

据我了解,C#是一种安全语言,不允许访问未分配的内存,除非通过unsafe关键字。但是,它的内存模型允许在线程之间存在不同步访问时重新排序。这会导致竞争危险,其中对新实例的引用似乎在实例完全初始化之前可用于竞争线程,并且是双重检查锁定的一个众所周知的问题。ChrisBrumme(来自CLR团队)在他们的MemoryModel中解释了这一点文章:Considerthestandarddouble-lockingprotocol:if(a==null){lock(obj){if(a==null)a=newA();}}Thisisacommontechniqueforavoidingaloc

c# - 如果分配了相同的值,setter 是否应该立即返回?

在实现INotifyPropertyChanged的​​类中,我经常看到这种模式:publicstringFirstName{get{return_customer.FirstName;}set{if(value==_customer.FirstName)return;_customer.FirstName=value;base.OnPropertyChanged("FirstName");}}准确的线条if(value==_customer.FirstName)return;打扰我了。我经常这样做,但我不确定它是否需要也不是很好。毕竟,如果调用者分配了完全相同的值,我不想重新分配该字

c# - 你能分配一个没有 TypeConverterAttribute 的 TypeConverter 吗?

依赖性要求迫使我在不同的地方拥有一个类及其TypeConverter组件。有没有办法在不使用TypeConverterAttribute的情况下将TypeConverter分配给类,从而导致循环程序集引用。谢谢。 最佳答案 嗯,不确定我以前见过这个,但是你可以在运行时使用TypeDescriptor添加TypeConverterAttribute,所以给定我的示例类:publicclassMyType{publicstringName;}publicclassMyTypeConverter:TypeConverter{publico