草庐IT

new_variable

全部标签

c# - "Closure over variable gives slightly worse performance"。如何?

在回答SO问题时,我被告知我的解决方案将引入一个变量闭包,因此它的性能会稍差一些。所以我的问题是:如何关闭?它将如何影响性能?这是questionList.Where(s=>s.ValidDate.Date==DateTime.Today.Year).ToList();这是我的solution.我引入了变量yr来存储年份。intyr=DateTime.Now.Year;List.Where(s=>s.ValidDate.Year==yr).ToList();它在答案的comments中 最佳答案 首先,这两种解决方案在功能上并不等同

c# - 在 C# 中使用带有 `new` 运算符的值类型的困境

当operatornew()与引用类型一起使用,实例的空间在堆上分配,引用变量本身放在堆栈上。除此之外,在堆上分配的引用类型实例中的所有内容都被清零。例如这里是一个类:classPerson{publicintid;publicstringname;}在以下代码中:classPersonDemo{staticvoidMain(){Personp=newPerson();Console.WriteLine("id:{0}name:{1}",p.id,p.name);}}p变量在堆栈上并且是Person的创建实例(它的所有成员)都在堆上。p.id将是0和p.name将是null.这是因为在

c# - VS 2015 中的 RazorEngine 模板 - 功能 'implicitly typed local variable' 在 c# 2 中不可用

在我的VS2015项目中打开RazorEnginecshtml模板文件时出现以下错误。Feature'implicitlytypedlocalvariable'isnotavailableinc#2.Pleaseuselanguageversion3orgreater.模板编译正确,只是智能感知有问题。项目设置为在构建时使用.net4.5。该应用程序也不是ASP.Net,而是桌面应用程序。intellisense在VS2013中也能正常工作。升级到VS2015后出现此问题。有没有人有类似的问题,可以建议如何解决这个问题? 最佳答案

c# - WCF,BasicHttpBinding : Stop new connections but allow existing connections to continue

.NET3.5、VS2008、使用BasicHttpBinding的WCF服务我在Windows服务中托管了一个WCF服务。当Windows服务关闭时,由于升级、定期维护等,我需要优雅地关闭我的WCF服务。WCF服务的方法最多可能需要几秒钟才能完成,典型的数量是每秒2-5次方法调用。我需要以允许任何先前调用方法完成的方式关闭WCF服务,同时拒绝任何新调用。通过这种方式,我可以在大约5-10秒内达到安静状态,然后完成Windows服务的关闭周期。调用ServiceHost.Close似乎是正确的方法,但它会立即关闭客户端连接,而无需等待任何正在进行的方法完成。我的WCF服务完成了它的方法

c# - byte[] array to struct with variable length 数组

我正在从套接字接收一个字节数组,字节的结构只是一个固定宽度字符串的大字符数组。在某些情况下,最后一个字段是动态的(而不是固定长度),我正在尝试将字节编码为结构。我读过可变长度的char数组需要是IntPtr,但我还没有弄清楚如何用剩余的字节对其进行编码。我还在一些文章中读到我可能需要第二个结构,但仍然无法弄清楚如何正确地编码它。这是一个这样的site在结构中处理可变长度字符数组的正确方法是什么?结构:[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Ansi)]publicstructHeader{#regionprivatemem

c# - Expression.Variable() 和 Expression.Parameter() 有什么区别?

两者似乎都返回相同的类型,并且具有相同的签名。那么它们之间有什么区别,我们应该在什么时候使用它们? 最佳答案 Expression.Variable用于在block中声明局部变量。Expression.Parameter用于声明传入值的参数。目前C#不允许使用语句主体的lambda表达式,但如果它允许,想象一下://Notcurrentlyvalid,admittedly...Expression>foo=x=>{inty=DateTime.Now.Hour;returnx+y;};如果此有效,C#编译器将使用Expression.

c# - Visual Studio 2015 中是否有用于 C# 的 "Go To Variable Type Declaration"函数或一个免费插件?

voidMagicalFunction(MagicalTypemagic){...magic.Poof("something");...varfoo=magic.GetFoo();...}在变量magic上按下热键将导航到类型MagicalType的定义。在foo上按下热键将转到类型Foo的定义,由于类型推断,它在这里不直接可见。Resharper插件具有此功能(称为GoToTypeofSymbol),但是是否有内置的替代方案或免费扩展来执行此操作? 最佳答案 右键单击“var”关键字,从上下文菜单中选择“Gotodefinitio

c# - new FileInfo(path).Name 与 Path.GetFileName(path)

哪个更好用,为什么?我的意思是这两个命令在哪些方面不同以及如何不同?性能、可读性……newFileInfo(path).Name或Path.GetFileName(path) 最佳答案 因为您不必为使用Path.GetFilename()创建新对象,所以性能会更好。这是两者的比较:代码:Path.GetFileName("G:\\u.png")IL:IL_0000:ldstr"G:\u.png"IL_0005:callSystem.IO.Path.GetFileName代码:newFileInfo("G:\\u.png").Name

c# - 当 new-able 使用 new T(),否则使用 default(T)

我正在研究C#泛型函数。错误时,如果泛型类型可以是new-able,返回newT(),否则返回default(T)。代码如下:privateTFunc(){try{//trytodosomething...}catch(Exceptionexception){if(Tisnew-able)//我知道对于那些使用newT()的人来说,它需要whereT:new()。这个问题是,如何在运行时判断这个? 最佳答案 您只需要检查该类型是否具有无参数构造函数。您可以通过以空类型作为参数调用Type.GetConstructor方法来实现。va

c# - Windows 窗体 : add new line to label if text is too long

我正在使用C#。有时,从Web服务返回的文本(我在标签中显示)太长,会在表单边缘被截断。如果表单不适合标签,是否有简单的方法向标签添加换行符?谢谢 最佳答案 如果您将标签设置为autosize,它会随着您放入其中的任何文本自动增长。为了使其以特定宽度自动换行,您可以设置MaximumSize属性。myLabel.MaximumSize=newSize(100,0);myLabel.AutoSize=true;经过测试并有效。如果您希望始终能够看到数据,可以将Label容器的AutoScroll属性设置为true。