草庐IT

c++栈对象的shared_ptr

全部标签

c# - 为什么使用类级访问修饰符而不是对象级?

在使用C#时,我最近意识到我可以调用Foo对象的私有(private)函数来自Foo的静态函数,甚至来自其他Foo对象。在了解了所有关于访问修饰符的知识之后,这对我来说听起来很奇怪。据我所知,当函数执行属于某种内部流程的一部分时,您将函数设为私有(private)。只有对象本身知道何时使用这些函数,因为其他对象不应该/不能控制对象的流程。是否有任何理由可以将同一类的其他对象排除在这个非常简单的规则之外?根据要求,一个例子:publicclassAClass{privatevoiddoSomething(){/*Dosomethinghere*/}publicvoidaFunction(

c# - List<MyClass> 对象缓冲区在哪里维护?它是在 RAM 上还是在 HDD 上?

我的问题可能听起来有点含糊。但我想知道的是List在哪里缓冲区保持不变。我有一个列表List我正在向其中添加来自无限循环的项目。但是Windows服务(我在其中创建列表)的RAM消耗从未超过17MB。事实上,即使我继续向列表中添加项目,它也徘徊在15-16MB之间。我试图对我的服务进行一些负载测试并遇到了这个问题。谁能告诉我它是否将数据转储到机器上的某个临时位置,并从那里选择它,因为我没有看到RAM消耗增加。我无限调用的方法是AddMessageToList()。classMainClass{ListmessageList=newList();privatevoidAddMessage

C# - 在单元测试中断言两个对象相等

使用Nunit或Microsoft.VisualStudio.TestTools.UnitTesting。现在我的断言失败了。[TestMethod]publicvoidGivenEmptyBoardExpectEmptyBoard(){vartest=newBoard();varinput=newBoard(){Rows=newList(){newRow(){Cells=newList(){0,0,0,0}},newRow(){Cells=newList(){0,0,0,0}},newRow(){Cells=newList(){0,0,0,0}},newRow(){Cells=new

C# 线程 - 锁定对象

我正在尝试在C#应用程序中锁定“盒装”对象,这不可能吗?classt{System.Objectt_x=newobject();publict(intp){t_x=p;}publicvoidw(){lock(t_x){for(inti=0;i在另一个类中我可以启动2个线程:Threadb1=newThread(newThreadStart(t1.w));b1.Start();Threadb2=newThread(newThreadStart(t1.w));b2.Start();但是该部分未锁定。当我锁定一个任意对象(即一个创建但未修改为对象a=newobject())时,它锁定得很好。

c# - 是否有为 using 语句实现 IDisposable 的公共(public)对象列表?

我想知道是否有某种备忘单可以让对象与using语句配合得很好...SQLConnection、MemoryStream等更进一步,如果能展示其他“拼图碎片”就更好了,比如您应该如何在using语句括号结束之前实际调用connection.Close()。有这样的东西吗?如果没有,也许我们应该做一个。 最佳答案 也许可以浏览一下我在http://www.lancemay.com/2010/01/idisposable-cheat-sheet/上的帖子.不确定这是否是您要查找的内容,但根据最初的问题,听起来可能是。

c# - 如何使用异步等待模式初始化对象

我试图在我的服务类中遵循RAII模式,这意味着当一个对象被构建时,它就被完全初始化了。但是,我在使用异步API时遇到了困难。相关类的结构如下所示classServiceProvider:IServiceProvider//Isonlyusedthroughthisinterface{publicintImportantValue{get;set;}publiceventEventHandlerImportantValueUpdated;publicServiceProvider(IDependency1dep1,IDependency2dep2){//IDependency1provi

c# - 将匿名类型列表转换为动态对象列表

为什么我不能转换List到List?我有以下代码:vardatasource=someList.Select(o=>new{x=o.A,y=o.B});dgvSomeGridView.DataSource=datasource.ToList();dgvSomeGridView.DataBind();然后我访问GridView.DataSource使用以下代码:vards=((List)dgvSomeGridView.DataSource);....但它在我将其转换为List的那一行抛出错误,它说:UnabletocastobjectoftypeSystem.Collections.Ge

c# - 属性 'name'是对象关键信息的一部分,不能修改。 Entity Framework

我正在尝试更新记录,但在context.SaveChanges();之后收到此错误消息Theproperty'name'ispartoftheobject'skeyinformationandcannotbemodified.这是更新函数的代码:if(context.EAT_SourceNames.Any(e=>e.name==newSourceName)){MessageBox.Show("NamealreadyexistsintheDatabase");}else{varnameToUpdate=context.EAT_SourceNames.SingleOrDefault(e=>

c# - 在 C# 中表示 Time 对象的最佳做法是什么?

我在数据库表中有一个时间列。日期并不重要,我们只需要一天中的某个时间。哪种类型最适合在C#中表示它?我打算使用DateTime,但我不喜欢约会的想法。 最佳答案 更新的答案:从.NET6开始,您可以使用内置的TimeOnly数据类型。原理同下:原答案:虽然其他答案大多是正确的,TimeSpan是唯一可以工作的内置类型,但重要的是要认识到“耗时测量”和“一天中的时间”。最明显的区别是一天中的某个时间必须小于24小时。TimeSpan对象可以涵盖的范围远不止于此。另一个区别是TimeSpan类型可以是负数。这代表时间倒退。负值作为一天中

c# - .NET 中类(对象)的大小

如何确定.NET中的类是大类还是小类?它是根据属性或字段的数量、属性/字段的数据类型来衡量的吗?或返回类型的方法?它的方法的参数?其方法的访问修饰符,虚拟方法?谢谢..classA{stringx{get;set;}}classB{intx{get;set;}}在这个例子中,如果我像这样实例化类A和BAobjA=newA();BobjB=newB();类objA是否更大,因为它包含一个String属性而objB仅包含一个Int?尽管我没有为它的属性设置任何值。谢谢编辑:只是为了澄清我的问题假设我有一个类publicclassMember{publicstringMainEmpId{ge