草庐IT

cond_var_lock

全部标签

c# - var 关键字有什么意义?

这个问题在这里已经有了答案:UseofvarkeywordinC#(86个答案)关闭去年。var关键字消除了对显式类型声明的需要,我感兴趣地阅读了SOdiscussion什么时候合适。我也读过(但没用过)Boo这似乎使事情更进一步optionaltodeclarealocalvariable.使用Boo,可以隐含类型和声明。这让我想知道,为什么C#语言设计者根本不屑于包含var关键字?更新:是的,var支持匿名类型,但匿名类型本身不需要var关键字...varanon=new{Name="Terry",Age=34};对比anon=new{Name="Terry",Age=34};

c# - 在 C# 中将 Dynamic 和 var 转换为对象

考虑这些函数:staticvoidTake(objecto){Console.WriteLine("Receivedanobject");}staticvoidTake(inti){Console.WriteLine("Receivedaninteger");}当我这样调用Take函数时:vara=(object)2;Take(a);我得到:收到一个对象但是如果这样调用它:dynamicb=(object)2;Take(b);我得到:收到一个整数两个参数(a&b)都被转换为object。但是为什么编译器会有这种行为呢? 最佳答案 v

c# - C#中有 "try to lock, skip if timed out"操作吗?

我需要尝试锁定一个对象,如果它已经被锁定就继续(超时后,或者没有它)。C#lock语句是阻塞的。 最佳答案 Ed为您提供了合适的功能。只是不要忘记调用Monitor.Exit()。您应该使用try-finallyblock来保证正确清理。if(Monitor.TryEnter(someObject)){try{//useobject}finally{Monitor.Exit(someObject);}} 关于c#-C#中有"trytolock,skipiftimedout"操作吗?,我们

c# - lock(new object()) -- cargo 崇拜或一些疯狂的 "language special case"?

我正在审查一位顾问编写的一些代码,虽然已经出现了数十个危险信号,但我无法理解以下代码片段:privatevoidfoo(){if(InvokeRequired){lock(newobject()){if(m_bar!=null)Invoke(newfooDelegate(foo),newobject[]{});}}else{if(OnBazChanged!=null)OnBazChanged();}}lock(newobject())在这里做什么?应该没有任何影响,因为它总是锁定另一个对象,但这种锁定在整个代码中都是持久的,即使在非复制和粘贴的部分也是如此。这是C#语言中的一些特殊情况

c# - TryParse with out var 参数

C#6.0中的一项新功能允许在TryParse方法中声明变量。我有一些代码:strings="Hello";if(int.TryParse(s,outvarresult)){}但是我收到编译错误:我做错了什么?P.S.:项目设置中设置了C#6.0和.NETframework4.6。 最佳答案 AnewfeatureinC#6.0allowstodeclarevariableinsideTryParsemethod.声明表达式从C#6.0中删除,并没有在最终版本中发布。你目前不能这样做。ThereisaproposalforitonG

c# - 如何可靠地确定在设计时使用 var 声明的变量的类型?

我正在emacs中为C#开发一个完成(智能感知)工具。这个想法是,如果用户键入一个片段,然后通过特定的按键组合要求完成,完成工具将使用.NET反射来确定可能的完成。这样做需要知道正在完成的事情的类型。如果是字符串,则有一组已知的可能方法和属性;如果它是一个Int32,它有一个单独的集合,依此类推。使用语义(emacs中提供的代码词法分析器/解析器包),我可以定位变量声明及其类型。鉴于此,使用反射获取类型的方法和属性,然后向用户显示选项列表是很简单的。(好吧,在emacs中做起来不是很简单,但是使用theabilitytorunapowershellprocessinsideemacs,

c# - dynamic (C# 4) 和 var 有什么区别?

我已经阅读了大量关于C#v4附带的新关键字的文章,但我无法区分“dynamic”和“var”。Thisarticle让我想了想,但我仍然看不出有什么不同。是不是您只能将“var”用作局部变量,但既可以用作局部变量又可以用作全局变量?你能显示一些没有动态关键字的代码,然后显示带有动态关键字的相同代码吗? 最佳答案 var是静态类型的-编译器和运行时知道类型-它们只是为你节省了一些输入...以下是100%相同的:vars="abc";Console.WriteLine(s.Length);和strings="abc";Console.W

c# - 为什么 ReSharper 想要对所有内容使用 'var'?

这个问题在这里已经有了答案:Differencebetween"var"and"object"inC#[duplicate](6个答案)关闭去年。我刚刚开始将ReSharper与VisualStudio结合使用(在对SO提出了许多建议之后)。为了尝试一下,我打开了一个最近的ASP.NETMVC项目。我注意到它建议的第一个也是最常见的事情之一是将我的大部分/所有显式声明更改为var。例如://FromThis:MyObjectfoo=DB.MyObjects.SingleOrDefault(w=>w.Id==1);//ToThis:varfoo=DB.MyObjects.SingleOr

c# - 使用 'var'会影响性能吗?

早些时候我问了一个关于whyIseesomanyexamplesusethevarkeyword的问题得到的答案是虽然它只对匿名类型是必需的,但它仍然被用来使编写代码“更快”/更容易并且“只是因为”。正在关注thislink("C#3.0-VarIsn'tObjec")我看到var在IL中被编译成正确的类型(您将在文章中途看到它)。我的问题是,如果使用var关键字,IL代码会占用多少(如果有的话),如果使用它,它是否会接近代码性能的可衡量水平无处不在? 最佳答案 var关键字没有额外的中间语言(IL)代码:对于非匿名类型,生成的IL

c# - C#中var关键字的使用

锁定。这个问题及其答案是locked因为这个问题离题但具有历史意义。它目前不接受新的答案或互动。在与同事讨论了C#3中“var”关键字的使用后,我想知道人们对通过var正确使用类型推断有何看法?例如,我在有问题的情况下懒惰地使用var,例如:-foreach(variteminsomeList){//...}//Typeof'item'notclear.varsomething=someObject.SomeProperty;//Typeof'something'notclear.varsomething=someMethod();//Typeof'something'notclear