草庐IT

修饰符

全部标签

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

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

c# - 带有 C# 内部访问修饰符的 Doxygen

我正在使用Doxygen为我正在处理的C#项目生成一些API文档。我在这个项目中有很多“内部”功能,不希望Doxygen在它生成的生成的html中生成这些签名。我已尝试启用HIDE_FRIEND_COMPOUNDS,但这仍然会导致我的内部类暴露在生成的文档中。有人知道怎么做吗? 最佳答案 添加到MacH的答案,你必须设置这些额外的配置参数才能使其工作:#ThePREDEFINEDtagcanbeusedtospecifyoneormoremacronamesthat#aredefinedbeforethepreprocessoris

c# - 在 C# 中使用 'new' 修饰符

我读到new修饰符隐藏了基类方法。usingSystem;classA{publicvoidY(){Console.WriteLine("A.Y");}}classB:A{publicnewvoidY(){//ThismethodHIDESA.Y.//ItisonlycalledthroughtheBtypereference.Console.WriteLine("B.Y");}}classProgram{staticvoidMain(){Aref1=newA();//DifferentnewAref2=newB();//PolymorpishmBref3=newB();ref1.Y(

c# - C# 构造函数 extern 修饰符的用途

C#构造函数extern修饰符的用途是什么?我知道使用externMETHODS调用Win32函数,但是CONSTRUCTORS呢?请给出实际例子。请注意:classMyClass{publicexternMyClass();} 最佳答案 我相信externctor的一个用途/目的是让构造函数在CLR本身内实现。如果您使用Reflector反汇编mscorlib.dll并查看System.String类型,您将看到:[MethodImpl(MethodImplOptions.InternalCall)]publicexternStr

c# - 隐藏(使用 "new"修饰符)接口(interface)方法声明的目的是什么?

可以将接口(interface)中的方法声明标记为“new”,但它是否具有任何“技术”意义,或者它只是一种明确声明声明不能覆盖先前声明的方式?例如:interfaceII1{newvoidF();}interfaceII2:II1{newvoidF();}是有效的(C#4.0编译器不会报错)但似乎与:interfaceII1{voidF();}interfaceII2:II1{voidF();}提前感谢您提供任何信息。编辑:您知道隐藏在界面中会有用的场景吗?编辑:根据此链接:Ismethodhidingeveragoodidea(感谢斯科特),最常见的场景似乎是协变返回类型的仿真。

c# - 面向对象编程中static修饰符有什么用?

在我的一次采访中,有人问我static修饰符表示什么。我通过告诉面试官不能创建静态类的对象以及其他有用的点来回答。但是面试官问创建这样一个对象不能创建的类有什么用。基本上,他们问的是为什么首先需要static?我不太确定如何回答这个问题。我应该说什么? 最佳答案 面试官可能希望您讨论面向对象的设计和模式,而不是他们希望您背诵特定修饰符的定义。这里真的没有正确答案。纯粹主义者可能会争辩说static是可憎的。实用主义者可能会争辩说,它填补了“一切都是对象”抽象中的一个空白,允许您调用实用方法,而实例化一个新对象只是为了调用它们是没有意

c# - 声明中缺少部分修饰符..存在这种类型的另一个部分声明。我是初学者,只是在看书

我是初学者,我正在看书做练习。下面是我的代码,我得到了这个“'Windowsform.Form1'类型声明缺少部分修饰符;存在此类型的另一个部分声明”。我该怎么办?我的代码如下:usingSystem;usingSystem.Windows.Forms;namespaceWindowsform{publicclassForm1:Form{privateTextBoxtxtEnter;privateLabellblDisplay;privateButtonbtnOk;publicForm1(){this.txtEnter=newTextBox();this.lblDisplay=newL

c# - C# 中的默认访问修饰符

如果我要创建一个如下所示的新对象,它默认具有哪个访问修饰符?ObjectobjectA=newObject(); 最佳答案 任何成员都将始终拥有最受限制的可用成员-因此在这种情况下,objectA的可访问性是private。(假设它是一个实例变量。作为局部变量没有任何意义,因为它们本身没有任何访问规则。)所以这样:classFoo{ObjectobjectA=newObject();}等同于:internalclassFoo{privateObjectobjectA=newObject();}“默认为最私有(private)”意味着

c# - 在反序列化期间使用 XML 修饰指定默认值

我在反序列化某些XML时遇到问题;第三方提供的XML非常冗长,因此如果没有为特定元素设置值,它将提供空元素(例如)。这对某些元素来说是个问题,例如,那些用于存储整数的元素。我可以控制第三方,所以我可以让他们指定一个默认值(0),或者我可以让他们完全省略这些元素。这两个都应该避免这个问题。但是,将来可能会出现我们没有那么多控制权的情况-在这种情况下,是否有一种方法可以通过装饰来指定默认值?[XmlElement("myinteger")=0???]publicintMyInteger{get{returnmyInteger;}set{myInteger=value;}}

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”没有重