草庐IT

c# - 为什么我可以使用集合初始值设定项和来自另一个类的私有(private)集合访问?

考虑以下代码:publicsealedclassOrder{publicOrder(){Items=newList();}publicListItems{get;privateset;}}publicsealedclassOrderItem{}这里是另一个类中的Order初始化。varorder=newOrder{Items={newOrderItem(),newOrderItem()}};您能解释一下它为什么有效吗?如您所见,Order具有privateset属性,所以我认为不可能设置它的值。 最佳答案 您的语句之所以有效,是因为

c# - 如何在 C# 注释中引用类的索引器成员

为了在XML注释/文档中引用类的成员,您必须使用以下标记:更好解释here.如何引用索引器?我的意思是,像这样的成员:internalobjectthis[intindex]{...}提前致谢。 最佳答案 关于c#-如何在C#注释中引用类的索引器成员,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/341118/

c# - C# 中通用类的特化模式?

在C#中,有时我希望可以为泛型类的某些“实例化”创建特殊方法。更新:下面的代码只是一个更抽象问题的愚蠢示例——不要过分关注时间序列,只是针对某些T的“添加额外方法”的原则。例子:classTimeseries{...TimeSeriesSlice(...){...}}在T是double的情况下,我想要一些额外的方法,比如Integrate(),Interpolate()等等只对double有意义,因为我需要对它们进行算术运算。有几种方法可以做到这一点,但我找不到一种令我满意的方法。1。继承到一个特殊的类classTimeseriesDouble:Timeseries{doubleInt

c# - 共享一个类的离散匿名方法?

我在玩EricLippert的Ref来自here的类(class).我在IL中注意到,看起来两个匿名方法都在使用相同的生成类,即使这意味着该类有一个额外的变量。虽然只使用一个新的类定义似乎有点合理,但令我惊讶的是,只有一个c__DisplayClass2的实例被build。这似乎暗示Ref的两个实例引用相同的c__DisplayClass2那不是说y吗?直到vart1才能收集被收集,这可能比joik之后发生得晚得多返回?毕竟,不能保证某些白痴不会编写直接访问y的函数(直接在IL中)。通过vart1之后joik返回。也许这甚至可以通过反射而不是通过疯狂的IL来完成。sealedclass

c# - 如何查找 C# 类的内部属性?保护?保护内部?

如果我有一个C#类MyClass如下:usingSystem.Diagnostics;namespaceConsoleApplication1{classMyClass{publicintpPublic{get;set;}privateintpPrivate{get;set;}internalintpInternal{get;set;}}classProgram{staticvoidMain(string[]args){Debug.Assert(typeof(MyClass).GetProperties(System.Reflection.BindingFlags.Public|Sys

c# - C#中跨类的静态变量初始化顺序是什么?

DependencyProperty.AddOwnerMSDNpage提供了两个具有静态成员的类的示例,并且一个类的成员依赖于另一个类的成员进行初始化。我认为MSDN是错误的-C#中静态变量的初始化顺序不可靠justlikeitisinC++或其他任何地方。我可能错了,因为WPF库本身就是这样编写的,而且它工作得很好。我错过了什么?C#编译器怎么可能知道安全的初始化顺序? 最佳答案 一种类型依赖于正在初始化的另一种类型是可以的,只要您不陷入循环即可。基本上这没问题:publicclassChild{staticChild(){}//

c# - 初始化类的要点?

我正在阅读一本关于C#的初学者书籍,我在“理解值和引用”部分,但有些东西我不明白。我所看到的是,这些书试图向我解释这一点(我也在Youtube上的几个教程视频中看到过这种情况)该类被用来创建......一个对象(??)的类。我已经阅读了整个上一章也发生过这种情况,但我不太明白,假​​设在下一章中会变得更加清楚。它并没有变得更清楚,所以我认为在我理解我之前解释的内容的概念之前继续下去不是一个好主意。以下部分是本书的一部分:Rememberthattoinitializeareferencevariablesuchasaclass,youcancreateanewinstanceofthe

c# - 如何创建和访问在 C# 中作为参数传递的匿名类的新实例?

我创建了一个函数,该函数接受SQL命令并生成可用于填充类实例列表的输出。该代码效果很好。我在这里包含了一个没有异常处理的稍微简化的版本,仅供引用-如果您想直接跳转问题,请跳过此代码。不过,如果您在这里有任何建议,我会洗耳恭听。publicListReturnList()whereT:new(){ListfdList=newList();myCommand.CommandText=QueryString;SqlDataReadernwReader=myCommand.ExecuteReader();TypeobjectType=typeof(T);FieldInfo[]typeField

c# - 限制类的实例创建?

我正在使用C#。我已经创建了一个可以包含在任何c#.net项目(桌面或基于Web)中的类,但我希望在我的类的那个应用程序中只创建10个对象。如果创建的对象实例超过10个,那么它应该给出错误,否则简单将不起作用。有两种情况,我会将myclass.cs文件包含在任何项目或我会将我的类捆绑在一个DLL中,然后将其包含在任何应用程序中在这两种情况下,如果在应用程序中创建了超过10个我的类的实例,则必须通过错误。这个问题是我老师问的,他让我在网上搜索答案,我试过了,但是没有找到解决这个问题的方法,我没听说我们可以限制对象?有可能吗,如果有的话怎么办?谢谢 最佳答案

c# - 具有许多属性的类的装饰器模式

我有这个简单的类:publicclassDataBag{publicstringUserControl{get;set;}publicstringLoadMethod{get;set;}publicdynamicParams{get;set;}publicintHeight{get;set;}publicDataBag(stringControl,objectvars,stringlm){UserControl=Control;LoadMethod=lm;Params=vars;Height=0;}}然后我想为它创建一个装饰器,它会添加一堆它自己的属性。问题是提供对装饰属性的访问的最简