草庐IT

always语句

全部标签

C# - using 语句的位置

我注意到很多来回讨论的一件事是using语句应该放在C#代码文件中的什么位置——无论是在最外层的范围内还是在命名空间内。我知道using语句的位置会影响该文件中引用的范围,但我不明白的是为什么在大多数情况下,有人会希望他们的using语句在他们的命名空间内。在几乎所有情况中,单个文件中只存在一个命名空间声明,因此限定using语句的范围似乎/(是?)无用。如果将多个类型和多个命名空间放在同一个文件中,那么using语句的作用域就非常有意义,但我仍然看到很多这样的情况,即使是在具有一个命名空间的文件中也是如此。为什么?usingSystem;namespaceMyNamespace{us

c# - "thread-safe type"到底是什么?我们什么时候需要使用 "lock"语句呢?

我阅读了所有关于线程安全类型和“锁定”语句的文档,但我仍然没有100%理解它。具体什么时候需要使用“lock”语句?它与(非)线程安全类型有何关系?谢谢。 最佳答案 想象一个类的实例,里面有一个全局变量。想象一下,两个线程同时对该对象调用一个方法,并且该方法更新内部的全局变量。变量中的值很可能会被破坏。不同的语言和编译器/解释器会以不同的方式处理这个问题(或者根本不处理......)但关键是你会得到“不希望的”和“不可预测的”结果。现在假设该方法在尝试读取或写入变量之前获得变量的“锁”。第一个调用该方法的线程将获得变量的“锁”,第二

c# - 语句 "delegates are secure"是什么意思?

在C#documentation对于委托(delegate),它说“委托(delegate)是一种引用类型,可用于封装命名或匿名方法。委托(delegate)类似于C++中的函数指针;但是,委托(delegate)是类型安全的并且安全”我的问题是,委托(delegate)“安全”是什么意思? 最佳答案 委托(delegate)强制对方法进行类型安全调用。这通常通过编译器执行的静态类型检查来工作。但这不是唯一的方法,您可以使用Delegate.DynamicInvoke()来绕过编译器类型检查。一个例子:usingSystem;cla

c# - Windows 窗体 : Pass clicks through a partially transparent always-on-top window

我正在设计一个始终显示在屏幕上且不透明度约为20%的窗口。它被设计成一种状态窗口,所以它总是在顶部,但我希望人们能够通过该窗口单击到下面的任何其他应用程序。这是我现在键入时位于此SO帖子顶部的不透明窗口:看到那个灰色条了吗?它会阻止我此刻在标签框中输入。 最佳答案 可以制作一个窗口,点击通过添加WS_EX_LAYERED和WS_EX_TRANSPARENT样式到它的扩展样式。还要让它始终位于顶部设置其TopMost为true并使其半透明使用合适的Opacity值:usingSystem;usingSystem.Windows.For

c# - Lambda "if"语句?

我有2个对象,我想将它们都转换为字典。我使用toDictionary()。一个对象获取key的lambda表达式是(i=>i.name)。另一方面,它是(i=>i.inner.name)。在第二个中,i.name不存在。如果i.name不存在,则i.inner.name始终存在。我可以使用lambda表达式来组合这两者吗?基本上读作:“如果i.name存在则将id设置为i.name,否则将id设置为i.inner.name”。非常感谢。更新当我说“不存在”时,我的意思是对象实际上没有属性,而不是属性只是空的。 最佳答案 如果这是两种

c# - goto 语句在这个例子中是如何工作的?

我正在研究这个代码示例:classProgram{staticvoidMain(string[]args){intx=10;inty=10;intgenerate=0;string[,]myArrayTable=newstring[x,y];Console.WriteLine("Enteraseeknumber:");stringcautat=Console.ReadLine();for(inti=0;i我不明白为什么调用“NotFound”语句并在控制台上打印其相应的消息,如果我输入一个像10这样的搜索数字,在这种情况下goto:Found语句正在执行,所以goto:NotFound

C# Switch 语句中的大小写敏感性

我正在使用switch语句并想知道如何在输入值时忽略大小写敏感度。这是我的代码:usingSystem;namespaceSwitchStatements{classMainClass{publicstaticvoidMain(string[]args){Start:Console.WriteLine("PleaseInputtheGrade");chargrade=Convert.ToChar(Console.ReadLine());switch(grade){case'A':Console.WriteLine("ExcellentWork!");break;case'B':Cons

c# - 使用带有静态类的语句在 visual studio 2015 CTP 中不起作用

我为我的一个C#6.0示例应用程序编写了以下代码。它在VisualStudio2015预览版中运行良好。但是现在当我下载了一段时间之前发布的最新版本的VisualStudio2015时。(http://blogs.msdn.com/b/bharry/archive/2015/01/16/visual-studio-2015-ctp-5-is-available.aspx)它停止工作了。下面是一个代码。usingSystem.Console;namespaceStaticClassUsing{classProgram{staticvoidMain(string[]args){WriteL

c# - 在 Using 语句中从 DataLayer 返回 DataReader

我们有很多数据层代码都遵循这种非常普遍的模式:publicDataTableGetSomeData(stringfilter){stringsql="SELECT*FROM[SomeTable]WHERESomeColumn=@Filter";DataTableresult=newDataTable();using(SqlConnectioncn=newSqlConnection(GetConnectionString()))using(SqlCommandcmd=newSqlCommand(sql,cn)){cmd.Parameters.Add("@Filter",SqlDbType

c# - 为什么这个 LINQ 连接语句不起作用?

我有这个LINQ查询://types...LinkedListitemScores=newLinkedList();varresult=fromiin_ctx.ItemsjoinsinitemScoresoni.Idequalss._idorderbys._scoredescendingselectnewItemSearchResult(i,s._score);//thisfails:returnresult.ToList();产生此错误的原因:Unabletocreateaconstantvalueoftype'System.Collections.Generic.IEnumerab