草庐IT

language-design

全部标签

c# - 禁用/修复 .Designer.cs 文件中的代码分析警告

我正在广泛使用DataVisualization.Charting.Chart,而且大部分情况下它都能正常工作。但是,我经常运行代码分析,并处理了我自己的所有警告。但是,在使用图表的*.Designer.cs文件中大约有30个CA2000(对象未沿所有异常路径放置)。Designer文件生成了几乎所有的图表代码,并且几乎所有的图表元素都实现了IDisposable。我在项目首选项中选中了“抑制生成代码的结果”,但它仍然如此。有什么方法可以解决这个问题,而不必手动创建图表对象,也不必为该类中的其余代码禁用代码分析?有没有办法为所有.Designer.cs文件禁用它?或者,是否有一种解决方

c# - 为什么 String.Contains 不直接调用最终重载?

String.Contains方法在内部看起来像这样publicboolContains(stringvalue){returnthis.IndexOf(value,StringComparison.Ordinal)>=0;}调用的IndexOf重载看起来像这样publicintIndexOf(stringvalue,StringComparisoncomparisonType){returnthis.IndexOf(value,0,this.Length,comparisonType);}这里对最终重载进行了另一个调用,然后使用签名调用相关的CompareInfo.IndexOf方法

当类与命名空间共享名称时出现 C# 错误

程序集1namespaceFoo{publicclassFoo{}}程序集2usingFoo;publicclassBar{Foofoo=newFoo();}我今天发现上面给出了错误Typenameexpectedbutnamespacenamefound。我觉得这很奇怪。据我所知,你不能声明一个命名空间变量,或者new()一个命名空间。Foo是一种类型,它被用在解析器希望找到类型的地方,那么为什么解析器不能正确解析它呢?我忽略了哪个语言功能,这意味着编译器团队无法实现它? 最佳答案 EricLippert的博客文章(部分one;t

C# 设计 : Why is new/override required on abstract methods but not on virtual methods?

为什么抽象方法需要new/override而虚方法不​​需要?示例1:abstractclassShapesClass{abstractpublicintArea();//abstract!}classSquare:ShapesClass{intx,y;publicintArea()//Error:missing'override'or'new'{returnx*y;}}编译器会显示这个错误:要使当前成员覆盖该实现,请添加override关键字。否则添加新关键字示例2:classShapesClass{virtualpublicintArea(){return0;}//itisvirt

c# - 为什么 C# 设计者要为 'using' 关键字附加三种不同的含义?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭12年前。using关键字具有三种不同的含义:类型/命名空间别名命名空间导入确保调用Dispose的语法糖文档将前两个定义称为指令(我猜这意味着它们本质上是预处理),而最后一个是语句。尽管它们在语法上有所区别,但为什么语言开发人员会通过附加三种不同的含义来使关键字的语义复杂化?例如,(免责声明:在我的脑海中,肯定有更好的例子)为什么不添加像alias和import

C# - "partial"类的好处是什么?

我问这个是因为我发现分发类定义是一个非常危险的特性,这样你就不能真正确定你是否了解它。即使我找到了三个部分定义,我怎么知道某处没有第四个定义?我是C#的新手,但已经使用C++10年,也许这就是我震惊的原因?无论如何,“部分”概念一定有一些很大的好处,我显然没有注意到这一点。我很想了解更多关于它背后的哲学。编辑:抱歉,错过了thisduplicate在搜索现有帖子时。 最佳答案 部分类在使用代码生成时很方便。如果您想修改生成的类(而不是从它继承),那么您将面临在重新生成代码时丢失更改的风险。如果您能够在单独的文件中定义额外的方法等,则

c# - 为什么值类型存储在堆栈上?

为什么C#(.Net)更喜欢堆栈而不是存储值类型?这种设计背后的主要原因是什么?是因为对堆栈的读/写操作更好地利用了机器处理器吗?此外,也许您可​​以证明为什么其他人不行? 最佳答案 EricLippert对此进行了讨论here;首先,“值类型存储在堆栈中”是不正确的。他们有时是,但不是:类中的字段捕获的变量迭代器block中的变量当它们可以存储在堆栈中时,这是一种对它们的生命周期进行建模的便捷方式,但不需要将它们存储在堆栈中。例如,您可以编写一个没有堆栈的编译器+CLI。 关于c#-为

c# - 你如何解决 "StyleCop C# style"和 "Framework Design Guidelines C# style"之间的差异?

在阅读了好书“FrameworkDesignGuidelines”(2008年11月第2版)的附录A“C#编码风格约定”之后,我对Microsoft内部使用/推荐的编码风格感到很困惑。博客条目ABriefHistoryOfC#Style声明:Infact,thedifferencesbetweenthe"StyleCopstyle"andthe"FrameworkDesignGuidelinesstyle"arerelativelyminor在我看来,差异非常明显。StyleCop说左大括号应该在单独的一行上,框架设计指南说它应该在开头语句之后。StyleCop说所有关键字后面都要跟一

c# - C# 平台是中立的吗?

今天我购买了C#3.0PocketReference(O'ReillyPublishers)。在那本书第一页的第一段中给出了“C#语言是平台中立,但它是为与Microsoft.Net平台良好协作而编写的"如果我没记错的话,PlatformNeutral意味着用该语言制作的软件应该可以在所有操作系统(例如Mac、Windows、Linux等)上运行。我知道Java正在满足这个特性,但是.Net还没有做到这一点(虽然MONO在Linux上取得了一些进展)。那么到目前为止,"PLATFORMNEUTRAL"这个词的意义是什么?提前致谢 最佳答案

c# - F# 缺少面向对象或命令式的什么?

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter为指导。10年前关闭。很多时候我听说F#不适合特定的任务,例如UI。“使用正确的工具”是一个常见的短语。除了缺少WinForms/WPF/ORM设计器等工具之外,我不确定F#中到底缺少什么——老实说!然而,特别是对于UI,我听说C#做得更好。那么,在命令式使用时,F#的实际区别和遗漏是什么?这是我想出的一个列表:大量缺少的工具支持F#仍是测试版你的开发人员不知道F#我不想考虑这