草庐IT

构造器

全部标签

c# - 这里发生了什么?没有默认构造函数时如何调用?

给定以下代码:publicstructFoo{publicFoo(intbar,intbaz):this(){Bar=bar;//Err1,2Baz=baz;//Err3}publicintBar{get;privateset;}publicintBaz{get;privateset;}}:this()实际上做了什么?没有默认构造函数,那么它在调用什么?没有这个附录,整个事情就会因错误而崩溃。Error1The'this'objectcannotbeusedbeforeallofitsfieldsareassignedtoError2Backingfieldforautomatical

c# - 构造函数中 "this"关键字的作用是什么?

我刚才在看MSDN的示例代码,偶然发现了:namespaceIListSourceCS{publicclassEmployee:BusinessObjectBase{privatestring_id;privatestring_name;privateDecimalparkingId;publicEmployee():this(string.Empty,0){}// 最佳答案 它使用该签名调用该类中的其他构造函数。它是一种根据其他构造函数实现构造函数的方法。base也可以用来调用基类的构造函数。您必须有一个与此匹配的签名构造函数才能

c# - 如何找到所有静态构造函数?

我有一个包含许多C#项目的大型VisualStudio解决方案。如何找到所有的静态构造函数?我们有一些错误,其中一些做了愚蠢的事情,我想检查其他的。 最佳答案 在VisualStudio中,您可以使用正则表达式在代码中搜索。试试这个:static\s+\w+\s*\(如果您允许您的开发人员使用其他字符集,您可以调整字符集thanletter,numbersandunderscore.使用\w简化正则表达式之所以可行,是因为static关键字的其他用途至少需要一个返回类型。 关于c#-如何

c# - 没有无参数构造函数的类型的 Activator.CreateInstance(Type)

这个问题在这里已经有了答案:CreatinginstanceoftypewithoutdefaultconstructorinC#usingreflection(4个答案)关闭9年前。阅读工作中的现有代码,我想知道这怎么能行得通。我在程序集中定义了一个类:[Serializable]publicclassA{privatereadonlystring_name;privateA(stringname){_name=name;}}在另一个程序集中:publicvoidf(Typet){objecto=Activator.CreateInstance(t);}和那个简单的调用f(typeo

c# - 静态构造函数会导致性能开销?

最近在dotnetpearls.com上阅读一篇文章here说静态ctors会受到大量的性能影响。不明白为什么? 最佳答案 我认为在大多数用例中“大量”是一种夸大其词。由于beforefieldinitflag的存在/不存在,拥有静态构造函数(即使它什么也不做)会影响类型初始化时间.当你有一个静态构造函数时,对时间有更严格的保证。对于大多数代码,我认为这没有太大区别-但如果您是紧密循环并访问类的静态成员,则可能会有所不同。就我个人而言,我不会太担心它-如果您怀疑它与您的真实应用程序相关,那么测试它而不是猜测。微基准测试很可能会夸大此

c# - 如何使用 StructureMap 通过代码定义默认构造函数?

我不知道如何通过代码为StructureMap(版本2.5)中的类型定义默认构造函数(当它存在重载时)。我想获取一个服务实例,容器必须向其中注入(inject)一个Linq2Sql数据上下文实例。我在我的“Bootstrap”方法中写了这个:ForRequestedType().TheDefault.Is.OfConcreteType();当我运行我的应用程序时,出现此错误:StructureMapExceptionCode:202NoDefaultInstancedefinedforPluginFamilyMyNamespace.Data.SqlRepository.MyDataCo

c# - 字符串构造器

我们可以说,stringmyString="Hello";它“神奇地”构造了一个包含该值的新字符串对象。为什么不能将类似的“无构造”方法用于从我们在代码中定义的类创建的对象?VS对string的“魔力”是什么?而对于enum呢?我从未见过有关其工作原理的解释。 最佳答案 基本上,它是C#语言规范的一部分:有字符串文字、数字文字、字rune字和bool文字的语法,但仅此而已。编译器使用这些文字来生成IL,对于大多数,“特定类型的常量”都有合适的指令,因此直接表示。decimal是一个异常(exception),它不是CLR的原始类型,

c# - 为什么这个静态构造函数没有被调用?

我正在创建asp.net网络服务。我有一个类,当我尝试初始化该类的对象时,它的静态构造函数没有被调用。我无法理解这种行为。在静态构造函数中,我正在从web.config文件中读取值。部分代码如下:[WebService(Namespace="http://tempuri.org/")][WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]publicclassService:System.Web.Services.WebService{AppControllerextractor;publicService(){try{e

c# - C#/Unity 中的构造函数注入(inject)?

我将C#与Microsoft的Unity框架结合使用。我不太确定如何解决这个问题。这可能与我对Unity的DI缺乏了解有关。我的问题可以用下面的示例代码来总结:classTrain(Personp){...}classBus(Personp){...}classPerson(stringname){...}Persondad=newPerson("joe");Personson=newPerson("timmy");当我在Bus上调用resolve方法时,如何确定注入(inject)了名为“timmy”的人“son”,在解析Train时如何确定名为“joe”的人“dad”解决了吗?我在

c# - 线程安全类是否应该在其构造函数的末尾设置内存屏障?

当实现一个旨在线程安全的类时,我是否应该在其构造函数的末尾包含一个内存屏障,以确保任何内部结构在它们可以被访问之前已经完成初始化?还是消费者有责任在使实例对其他线程可用之前插入内存屏障?简化问题:由于在线程安全类的初始化和访问之间缺少内存屏障,下面的代码中是否存在可能导致错误行为的竞争危险?或者线程安全类本身应该防止这种情况发生吗?ConcurrentQueuequeue=null;Parallel.Invoke(()=>queue=newConcurrentQueue(),()=>queue?.Enqueue(5));请注意,程序不入队是可以接受的,如果第二个委托(delegate)