草庐IT

new_class

全部标签

c# - 当 new-able 使用 new T(),否则使用 default(T)

我正在研究C#泛型函数。错误时,如果泛型类型可以是new-able,返回newT(),否则返回default(T)。代码如下:privateTFunc(){try{//trytodosomething...}catch(Exceptionexception){if(Tisnew-able)//我知道对于那些使用newT()的人来说,它需要whereT:new()。这个问题是,如何在运行时判断这个? 最佳答案 您只需要检查该类型是否具有无参数构造函数。您可以通过以空类型作为参数调用Type.GetConstructor方法来实现。va

c# - Entity Framework 代码优先 : How to ignore classes

这类似于问题here和here,但这些都是旧的,没有好的答案。假设我有以下类(class):classHairCutStyle{publicintID{get;set;}publicstringName{get;set;}}classCustomerHairCutPreference{publicintID{get;set;}publicCustomerCustomer{get;set;}publicHairCutStyleHairCutStyle{get;set;}}假设我的HairCutStyle数据存储在另一个数据库的一个表中(我从PaulMitchell自己那里得到它)。我想将

c# - Windows 窗体 : add new line to label if text is too long

我正在使用C#。有时,从Web服务返回的文本(我在标签中显示)太长,会在表单边缘被截断。如果表单不适合标签,是否有简单的方法向标签添加换行符?谢谢 最佳答案 如果您将标签设置为autosize,它会随着您放入其中的任何文本自动增长。为了使其以特定宽度自动换行,您可以设置MaximumSize属性。myLabel.MaximumSize=newSize(100,0);myLabel.AutoSize=true;经过测试并有效。如果您希望始终能够看到数据,可以将Label容器的AutoScroll属性设置为true。

c# - Entity Framework new transaction is not allowed because there are other threads running in the session,多线程保存

我正在尝试将多线程进程的日志保存在数据库中,但出现以下错误:不允许新事务,因为session中还有其他线程在运行。在每个胎面我都有这个功能:internalboolWriteTrace(IResultresult,stringmessage,bytetype){SPC_SENDING_TRACEtrace=newSPC_SENDING_TRACE(message,Parent.currentLine.CD_LINE,type,Parent.currentUser.FULLNAME,Parent.guid);Context.SPC_SENDING_TRACE.AddObject(trac

c# - 枚举器实现 : Use struct or class?

我注意到List将其枚举器定义为struct,而ArrayList将其枚举器定义为class.有什么不同?如果我要为我的类(class)写一个枚举器,哪个更好?编辑:使用yield无法满足我的要求,所以我正在实现自己的枚举器。也就是说,我想知道遵循List的路线是否会更好。并将其作为结构实现。 最佳答案 像其他人一样,我会选择一个类(class)。可变结构是讨厌的。(正如Jared所建议的那样,我会使用迭代器block。手动编写枚举器代码很费力才能正确。)参见thisthread例如,列表枚举器是一个导致问题的可变结构......

c# - 食人族类(class)

一段时间以来,我一直在努力思考为什么允许编译某些“食人族”类的原因。在我继续之前,也许我应该解释一下我所说的“食人者”类。不确定这个术语是我刚刚发明的,还是它已经存在了一段时间,或者我是否正确使用了它,但现在这并不重要。我基本上称食人类为消耗自身的类。换句话说,一个类的接口(interface)声明了它自己类型的成员。例如:classFoo{publicFooSomeFoo;}正如您在上面看到的,Foo类有一个Foo类型的成员(它本身)。现在,我第一次看到这个(很久以前)我没想到它会编译,但令我惊讶的是它确实编译了。我不认为这会编译的原因是因为对我来说这尖叫着某种类型的递归噩梦。为了让

c# - 为什么要使用 Create 方法而不是使用 "new"?

有什么优点,什么时候适合使用静态构造函数?publicclassMyClass{protectedMyClass(){}publicstaticMyClassCreate(){returnnewMyClass();}}然后通过创建类的实例MyClassmyClass=MyClass.Create();与仅拥有公共(public)构造函数并使用创建对象相反MyClassmyClass=newMyClass();如果Create方法返回类实现的接口(interface)实例,我可以看到第一种方法很有用……它将强制调用者创建接口(interface)实例而不是特定类型。

c# - ClickOnce 安装期间出现 FileNotFoundException,缺少 HKCU\Software\Classes\Software

我们的一位用户对ClickOnce有一个非常严重的问题。该错误是一个经典错误:Followingerrorsweredetectedduringthisoperation.*[14/10/201101:40:25]System.IO.FileNotFoundException-Thesystemcannotfindthefilespecified.(ExceptionfromHRESULT:0x80070002)-Source:System.Deployment-Stacktrace:atSystem.Deployment.Internal.Isolation.IsolationInt

c# - 为什么具有 T : class result in boxing? 约束的泛型方法

这个问题在这里已经有了答案:BoxingwhenusinggenericsinC#(2个答案)关闭3年前。为什么将T限制为类的泛型方法会在生成的MSIL代码中包含装箱指令?我对此感到非常惊讶,因为既然T被限制为引用类型,那么生成的代码应该不需要执行任何装箱。这是C#代码:protectedvoidSetRefProperty(refTpropertyBackingField,TnewValue)whereT:class{boolisDifferent=false;//forreferencetypes,weuseasimplereferenceequalitychecktodeterm

c# - T[].Contains for struct 和 class 表现不同

这是一个后续问题:List.ContainsandT[].ContainsbehavingdifferentlyT[].Contains当T时表现不同是类和结构。假设我有这个结构:publicstructAnimal:IEquatable{publicstringName{get;set;}publicboolEquals(Animalother)//在这里,通用Equals如我所料被正确调用。但是对于类:publicclassAnimal:IEquatable{publicstringName{get;set;}publicboolEquals(Animalother){return