草庐IT

构造器

全部标签

c# - 为什么在构造函数中实例化新对象之前检查类变量是否为空?

与我之前合作过的一个团队,每当创建一个新的服务类来处理数据层和表示层之间的业务逻辑时,都会执行如下操作:classDocumentService{publicDocumentRepositoryDocumentRepository{get;set;}publicDocumentService(){if(DocumentRepository==null)DocumentRepository=newDocumentRepository();}}我一直不太明白为什么要对null进行检查。如果正在调用构造函数,则意味着它必须为null..因为它是一个新实例,对吗?为什么要这样做?在我看来,这是

c# - 在 C# 构造函数 header 中使用冒号

下面是一个名为Complex的struct的构造函数,它有两个成员变量,Real和Imaginary:publicComplex(doublereal,doubleimaginary):this(){Real=real;Imaginary=imaginary;}函数头中冒号后面的部分有什么用? 最佳答案 您始终可以从一个构造函数中调用另一个构造函数。比如说:publicclassmySampleClass{publicmySampleClass():this(10){//Thisisthenoparameterconstructor

c# - 如何使用反射调用静态构造函数?

如何获取静态构造函数的ConstructorInfo?publicclassMyClass{publicstaticintSomeValue;staticMyClass(){SomeValue=23;}}我尝试了以下但失败了......TypemyClass=typeof(MyClass);//throwsexceptionmyClass.TypeInitializer.Invoke(null);//returnsnull(alsotrieddeletingBindingFlags.PublicConstructorInfoci=myClass.GetConstructor(Bindi

c# - 带有 dontEscape 的 Uri 构造函数已过时,替代方案是什么?

我的问题是关于在不转义的情况下将URL传递给HttpWebRequest,我搜索了论坛和互联网,但没有找到好的解决方案。我有以下URL:stringURL=www.website.com/sub/redirec\t\bs\dd所以当我像这样创建一个uri时:Uriuri=newUri(URL);HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create(uri);在这种情况下,使用get方法我将获得以下URL:www.website.com/sub/redirect%5Ct%5Cbc%5Cdd这个符号“\”将被“%5C”取代。对我来说

c# - 为什么我不能在构造函数中分配给 lambda 语法只读属性?

我的情况:publicclassA{publicstring_prop{get;}publicA(stringprop){_prop=prop;//allowed}}另一种情况:publicclassA{publicstring_prop=>string.Empty;publicA(stringprop){//Propertyorindexer'A._prop'cannotbeassignedto--itisreadonly_prop=prop;}}两种语法:publicstring_prop{get;}和publicstring_prop=>string.Empty;创建一个只读属性

c# - Autofac 没有找到带有 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' 的构造函数

Noneoftheconstructorsfoundwith'Autofac.Core.Activators.Reflection.DefaultConstructorFinder'ontype'LMS.Services.Security.EncryptionService'canbeinvokedwiththeavailableservicesandparameters:Cannotresolveparameter'LMS.Models.SecuritySettingssecuritySettings'ofconstructor'Void.ctor(LMS.Models.Securi

c# - xunit 构造函数在每次测试之前运行

在测试类中,构造函数在每个测试之前启动,构造函数提供的初始化数据无法被后续测试访问。我希望所有测试都可以访问初始化数据。(只创建一次)[Category("Basics")][Collection("DD")][ExcludeFromCodeCoverage]publicclassSecurityTests:TestUnitBase{StartUpFixturefixture;publicAuthenticationTests(StartUpFixturefixture):base(){this.fixture=fixture;}[Fact(DisplayName="Successfu

c# - 强制派生类使用参数实现基类构造函数

是否可以对需要实现构造函数(带参数)的派生类强制执行编译时契约?我有一个基类,它的构造函数需要一个参数:publicclassFooBase{protectedintvalue;publicFooBase(intvalue){this.value=value;}publicvirtualvoidDoSomething(){thrownewNotImplementedException();}}我想强制派生我的基类来实现相同的构造函数:publicclassFoo:FooBase{publicFoo(intvalue):base(value){}publicoverridevoidDoS

c# - 在 .NET 中,是否在创建新的 AppDomain 时调用静态构造函数?

当我在C#中使用AppDomain.CreateDomain创建一个新的AppDomain时,当组件加载到新创建的AppDomain中时,是否会调用静态构造函数?有问题的程序集已经加载到当前域中。 最佳答案 否-静态构造函数只会在第一次访问静态成员或创建实例时调用。不过,静态构造函数将在每个AppDomain中调用一次,如果您担心的话。这不像在不同的AppDomain中执行过一次,新AppDomain中的类型未初始化:)请注意,没有静态构造函数的类型的类型初始值设定项可能比有静态构造函数的类型早于或晚于执行,具体实现细节change

c# - 什么是构造函数解析顺序?

当存在多个构造函数时,CaSTLeWindsor如何确定解析哪个构造函数? 最佳答案 所有可用的构造函数都被建模为候选人,并且基本上是在他们之间进行竞赛。构造函数中的每个参数代表一个可以满足或不满足的依赖关系。对于每个候选构造函数,分析所有依赖关系。如果可以满足依赖关系,则为候选人加两分。如果不能满足,则从候选人中减去两分。得分最高的候选构造函数获胜,并被选中实例化组件。这个算法的代码是here. 关于c#-什么是构造函数解析顺序?,我们在StackOverflow上找到一个类似的问题: