草庐IT

const修饰符的萃取

全部标签

c# - 如何增加属性的访问修饰符

我正在尝试创建一组类,其中共同的祖先负责设置各种属性所涉及的所有逻辑,而后代只是根据特定后代是否需要更改属性的访问权限。当我尝试如下所示执行此操作时,出现编译器错误:“在覆盖‘protected’继承成员时无法更改访问修饰符”有没有办法实现我想要做的事情?谢谢publicclassParent{privateint_propertyOne;privateint_propertyTwo;protectedvirtualintPropertyOne{get{return_propertyOne;}set{_propertyOne=value;}}protectedvirtualintPro

c# - static 和 const 变量之间的区别

这个问题在这里已经有了答案:WhatisthedifferencebetweenconstandstaticinC#?(5个答案)关闭7年前。在声明全局变量时,“static”和“const”有什么区别;namespaceGeneral{publicstaticclassGlobals{publicconstdoubleGMinimum=1e-1;publicconstdoubleGMaximum=1e+1;}}哪个更好(考虑到这些变量永远不会改变)namespaceGeneral{publicstaticclassGlobals{publicstaticdoubleGMinimum1

c# - 编译时间 'const'是什么意思?

他们说readonly和const之间的区别在于const是编译时的(而readonly是运行时的)。但这到底是什么意思,它是编译时间?一切都被编译成字节码不是吗? 最佳答案 这意味着const变量被写入它们被引用的位置。因此,假设您有2个库,其中一个带有const变量://LibraryAconstintTEST=1;//LibraryBvoidm(){Console.WriteLine(A.TEST);}该变量实际上是在编译时写入B的。不同之处在于,如果您重新编译A而不是B,则B将具有“旧”值。readonly变量不会发生这种情

c# - 在方法覆盖中更改 params 修饰符

我知道params修饰符(将数组类型的一个参数转换为所谓的“参数数组”)不是方法签名的一部分。现在考虑这个例子:classGiraffid{publicvirtualvoidEat(int[]leaves){Console.WriteLine("G");}}classOkapi:Giraffid{publicoverridevoidEat(paramsint[]leaves){Console.WriteLine("O");}}编译时没有警告。然后说:varokapi=newOkapi();okapi.Eat(2,4,6);//willnotcompile!给出错误(方法“Eat”没有重

c# - 使用 Roslyn CodeFixProvider 向方法添加访问修饰符?

几天前我在TechEd,我看到了thistalkbyKevinPilch-Bisson(releventpartstartsatabout18minutes)...我觉得这很酷,所以我决定自己和Roslyn一起玩。我正在尝试制定规则“必须声明访问修饰符”(StylecopSA1400)-意思是,这违反了规则:staticvoidMain(string[]args){}没关系:publicstaticvoidMain(string[]args){}它必须有明确的内部关键字、公共(public)关键字、私有(private)关键字或protected关键字。检测违规相当容易,但现在我正在尝

c# - 使用 T4/EnvDTE 获取所有用特定属性修饰的方法

我想获取项目中使用T4/EnvDTE使用MyAttribute修饰的所有公共(public)方法的列表。我知道这可以通过反射来完成,但我不想加载程序集并在T4模板中反射它,相反,我想使用现有的代码文件作为源。以下是我在互联网上找到的引用当前项目的样板代码 最佳答案 我想确认您使用EnvDTE获取有关项目类和方法的设计时信息的计划。在我看来,这比冒险反射(reflect)同一项目的过时程序集更可靠。由于您已经获得了解决方案的当前项目,因此您现在应该使用VisualStudioCodeModel迭代您的类及其方法等。我知道这可能很烦人,

c# - 如何在此父方法中等待没有异步修饰符的异步方法?

我有一个我想要等待的方法,但我不想造成多米诺骨牌效应,认为任何东西都可以调用这个调用方法并等待它。比如我有这个方法:publicboolSave(stringdata){introwsAffected=awaitUpdateDataAsync(data);returnrowsAffected>0;}我在打电话:publicTaskUpdateDataAsync(){returnTask.Run(()=>{returnData.Update();//returnanintegerofrowsAffected}}这行不通,因为我必须在Save()的方法签名中加入“async”然后我不能返回

c# - 事件的 extern 修饰符的目的是什么?

这个问题在这里已经有了答案:HowdoesexternworkinC#?(4个答案)关闭8年前。浏览C#LanguageSpecification5.0时我开始意识到您可以定义一个外部事件。我习惯于为平台调用和native回调外部方法。在.NET世界的11年里,我还没有遇到过这个概念。extern事件与什么交互操作?它是否提供订阅某些本地事件的能力?你能发起这样的事件吗?它解决的哪些问题在C#语言中占有一席之地?我搜索了“extern”的规范,发现属性、索引器、构造函数、静态构造函数、终结器(!)甚至运算符(!)都可以是extern。字段不能。(我还了解到命名空间别名可以是“exter

c# - 配置 Unity 以解析采用修饰依赖项的类型,该依赖项的参数随注入(inject)的类型而变化

这是一个相当直接的装饰器模式场景,复杂的是装饰类型有一个构造函数参数,该参数取决于它被注入(inject)的类型。我有一个这样的界面:interfaceIThing{voidDo();}像这样的实现:classRealThing:IThing{publicRealThing(stringconfiguration){...implementation...}publicvoidDo(){...implementation...}}还有这样的装饰器:classDecoratingThing:IThing{IThing_innerThing;publicDecoratingThing(IT

c# - 为什么 ReSharper 更喜欢 const 而不是 readonly?

我注意到“常见做法和代码改进”下的ReSharper建议:将局部变量或字段转换为常量。我还注意到,在BillWagner的《EffectiveC#:50SpecificWaystoImproveYourC#》一书中,有一个语言成语“Preferreadonlytoconst”,作者在其中解释了使用const的风险。我的问题不是关于readonly和const之间的区别以及何时使用它们,而是为什么一个来源将const视为一种常见的做法/代码改进,而另一方面,第二个来源将readonly视为一个习语? 最佳答案 私有(private)常