草庐IT

new_size

全部标签

c# - 函数的 "static new"修饰符有什么意义?

今天,我在遗留代码中发现了一些东西。它具有一项功能的“静态新”。看起来像这样。classFoo{publicstaticvoidDo(){Console.WriteLine("Foo.Do");}}classBar:Foo{publicstaticnewvoidDo(){Console.WriteLine("Bar.Do");}}我不明白类Bar中Do方法的staticnew修饰符。在C#中,静态方法只能用类名调用,不能用对象名调用。所以,我认为拥有"new"与没有"new"之间没有任何区别。一般情况下,如果某些语法是不必要的,C#只是将其视为错误。有人知道为什么C#允许这种语法吗?

c# - Dictionary.Clear 和 new Dictionary() 的区别

C#中Dictionary.Clear和newDictionary()之间的主要区别是什么?在哪些情况下推荐使用哪一种? 最佳答案 Dictionary.Clear()将删除字典中的所有KeyValue对。执行newDictionary()将创建一个新的字典实例。当且仅当旧版本的字典未被另一个引用作为根时,创建新字典将使整个字典及其内容(未在其他地方作为根)可供GC清理。Dictionary.Clear()将使KeyValue对可用于清理。在实践中,这两个选项往往会产生非常相似的效果。区别在于在方法中使用this时会发生什么:voi

PHPUnit 覆盖 : Allowed memory size of 536870912 bytes exhausted

我正在尝试使用以下命令使用PHPUnit和phpdbg为我的PHP项目生成代码测试覆盖率:phpdbg-dmemory_limit=512M-qrr./bin/phpunit-c.phpunit.cover.xml这很好用:PHPUnit6.2.4bySebastianBergmannandcontributors.........8/8(100%)Time:114ms,Memory:14.00MBOK(8tests,13assertions)GeneratingcodecoveragereportinHTMLformat...done但是,当我在docker容器中使用完全相同的命令时

PHPUnit 覆盖 : Allowed memory size of 536870912 bytes exhausted

我正在尝试使用以下命令使用PHPUnit和phpdbg为我的PHP项目生成代码测试覆盖率:phpdbg-dmemory_limit=512M-qrr./bin/phpunit-c.phpunit.cover.xml这很好用:PHPUnit6.2.4bySebastianBergmannandcontributors.........8/8(100%)Time:114ms,Memory:14.00MBOK(8tests,13assertions)GeneratingcodecoveragereportinHTMLformat...done但是,当我在docker容器中使用完全相同的命令时

c# - 在哪里以及为什么使用 int a=new int?

只是好奇,有什么区别:intA=100;和intA=newint();我知道new用于在堆上分配内存..但我真的不明白这里的上下文。 最佳答案 staticvoidMain(){intA=newint();intB=default(int);intC=100;Console.Read();}编译为.methodprivatehidebysigstaticvoidMain()cilmanaged{.entrypoint//Codesize15(0xf).maxstack1.localsinit([0]int32A,[1]int32B,

c# - C# 中 'new' 的性能成本?

在C#中,使用new关键字的性能成本是多少?我特别询问与游戏开发有关的问题,我知道在C++中,每个更新周期都绝对不能成为新事物。这同样适用于C#吗?我正在使用XNA并为移动设备开发。真的只是问一个优化问题。 最佳答案 new的成本分为三个部分:分配内存(如果是值类型可能不需要)运行构造函数(取决于你在做什么)垃圾收集成本(同样,如果它是值类型,这可能不适用,具体取决于上下文)如果不在主代码中创建任何新对象,就很难以惯用的方式使用C#...尽管我敢说尽可能多地重用对象是可行的。尝试使用一些真实的设备,看看您的游戏表现如何。我当然同意像

c# - 为什么我们在初始化字符串时不使用 new 运算符?

我在面试中被问到这个问题:字符串是引用类型还是值类型。我说的是引用类型。然后他问我为什么我们在初始化字符串时不使用new运算符?我说是因为c#语言具有更简单的创建字符串的语法,并且编译器会自动将代码转换为对System.String类的构造函数的调用。这个答案是否正确? 最佳答案 字符串是不可变的引用类型。有ldstr允许将新对象引用推送到字符串文字的IL指令。所以当你写:stringa="abc";编译器测试"abc"文字是否已经在元数据中定义,如果没有则声明它。然后它将这段代码翻译成以下IL指令:ldstr"abc"这基本上使a

C# 现有对象上的 'new' 关键字

我想知道一旦对象的引用被重新分配,对象(在C#中)会发生什么。示例:Carc=newCar("RedCar");c=newCar("BlueCar");由于引用被重用,垃圾收集器是否会在丢失引用后处置/处理“红色汽车”?或者是否需要实现单独的方法来处理“红色汽车”?我想知道的主要是因为我要回收一个相对较大的对象,并且需要知道在重新创建它时是否应该做任何事情。 最佳答案 在您的示例中,当c分配给BlueCar时,c的RedCar实例将有资格进行垃圾回收。您无需执行任何操作。查看这篇关于.NET垃圾收集器的(旧的,但仍然相关的)MSDN

c# - .NET 字典 : get or create new

我经常发现自己创建了一个Dictionary具有非平凡的值类(例如List),然后在填充数据时始终编写相同的代码模式。例如:vardict=newDictionary>();stringkey="foo";stringaValueForKey="bar";也就是我想插入"bar"到键"foo"对应的列表中,其中键"foo"可能没有映射到任何东西。这是我使用不断重复的模式的地方:ListkeyValues;if(!dict.TryGetValue(key,outkeyValues))dict.Add(key,keyValues=newList());keyValues.Add(aValu

c# - Size 属性的大小无效,为 0

我在社交网络上工作,我的一个过程返回VARCHAR输出。所以这就是我写的:SqlParameterjob1=cmd2.Parameters.Add("@job",SqlDbType.VarChar);job1.Direction=ParameterDirection.Output;但是出现这个错误:String[1]:theSizepropertyhasaninvalidsizeof0. 最佳答案 在指定varchar参数时需要定义一个长度:SqlParameterjob1=cmd2.Parameters.Add("@job",Sq