Tag: oop

将派生类对象分配给父类引用

当我看到时,我总是感到困惑: Parent ref = new Child(); 其中Child类扩展Parent。 对象ref如何在内存中看起来像? 如何处理虚拟方法? 非虚? 它与以下内容有何不同: Child ref = new Child();

关于私有,公共和受保护构造函数的抽象类的一些问题

我的第一个问题:抽象类中的protected和public构造函数之间有什么区别? 我的第二个问题:如果抽象类有一个私有构造函数,它是否有意义? 提前致谢!

C#朋友类和OOP组合

给定包含原始数据集的类A和包含该数据的重新组织版本(GUI就绪)的类B,我想使A中的原始数据在B中可见。 显然,A类中的原始数据包含在私有成员中。 我想通过使用类似于C ++的朋友类方法的东西,使这些数据在B中可见。 我该如何处理? 谢谢。

使用RavenDB实现存储库和服务模式

我在RavenDB项目中实现存储库和服务模式有些困难。 主要关注的是我的存储库界面应该是什么样子,因为在RavenDB中我使用了几个索引来查询。 假设我需要获取parentid等于1的所有项目。一种方法是使用IQueryable List()并获取所有文档,然后添加一个where子句来选择parentid等于1的项目。这似乎是一个坏主意因为我无法在RavenDB中使用任何索引function。 所以另一种方法是在存储库中有类似这样的东西,IEnumerable Find(字符串索引,Func谓词),但这似乎也是一个坏主意,因为它不够通用,并且要求我实现这个方法,如果我从RavenDB更改到一个常见的SQL服务器。 那么如何实现通用存储库,但仍然可以在RavenDB中获得索引的好处?

为什么我需要使用get和set?

我有一个代码段: public class MyClass { private string _myProperty; public string MyProperty { get { return _myProperty; } set { _myProperty = value; } } } 这有什么意义? 我可以将_myProperty字符串声明为public,我的任何类对象都可以直接访问它们并获取或设置值。 相反,我们使用类对象将_myProperty私有,并使用get和set来访问它们。 在任何一种情况下,类对象都能够访问它们,结果总是相同的。 那么为什么要用这种方法? 这只是因为我可以在setter中实现一些约束吗? 除此之外会对成员变量造成什么危害呢? 在这个例子中,我可以将_myProperty公开为public,而不是像OOP所暗示的那样只将它限制为私有。

对.NET类的属性数量有任何限制吗?

收到一个规范,向对象添加800多个属性。 他们对C#(或.NET)中对象可以拥有的属性数量有任何“限制”吗? 对于具有这许多属性的此类对象,他们的任何性能影响是否都要关注? 谢谢!

inheritanceNon-Generic One C#的通用接口

这是课堂设计问题。 我有主要的抽象类 public abstract class AbstractBlockRule { public long Id{get;set;} public abstract List Restrictions {get;}; } public interface IRestriction{} public interface IRestriction:IRestriction where T:struct { T Limit {get;} } public TimeRestriction:IRestriction { public TimeSpan Limit{get;set;} } public AgeRestriction:IRestriction { public int Limit{get;set;} } public class BlockRule:AbstractBlockRule { public virtual List Restrictions {get;set;} } BlockRule rule=new […]

关联,聚合和组合

我正在处理这个问题。 我正在创造数学问题,每个人都有回应。 例如。 如果我的问题是关于“5x + 15 = 2的结果?” ,我将等待一个答案(作为整数)。 如果我的问题是“给我这个形状的区域和许可者” ,我将等待两个答案(作为双打)。 在另一个中,我将等待作为字符串的响应 和其他人一样,我可以有几种答案或各种数据类型的响应。 我的大问题是。 如何在类问题和响应之间建立关系。 如果这应该是一个关联,聚合或组合,我也在处理。 谢谢。 编辑:很好,这是一个组合。 最后,根据上述句子,我该如何表现设计? 这些是我的一些想法,但我想我错了。 public class Question { public Response _response; //public List //public Dictionary public Question() { this._response = new Response(); } } public class Response { }

为什么静态构造函数没有任何参数

根据MSDN: 静态构造函数不接受访问修饰符或具有参数。 在创建第一个实例或引用任何静态成员之前,会自动调用静态构造函数来初始化类。 无法直接调用静态构造函数。 任何人都可以解释为什么静态构造函数不能有参数。

如何复制对象的实例?

我正在尝试编写一些填充List代码(实际上,它是一系列Lists ,但我们可以假装它只是一个List )。 我们的想法是在List添加一个IPackage ,用于订购的IPackage总量。 请参阅以下代码: ParseExcel pe = new ParseExcel(); Pinnacle p = pe.ParsePinnacleExcel(); Rack r = new Rack(20,2,4.5,96,42,6,25*12); foreach (PinnacleStock ps in p.StockList.Where(x => x.ColorCode == “10” && x.PackageLength == 30.64)) { for (int i = 1; i <= ps.OnOrder; i++) { r.TryAddPackage((IPackage)ps); } } 在将IPackage重复添加到列表中的情况下,一切似乎都运行良好。 但是,似乎正在添加对象的相同实例,即每次将对象添加到列表时都不会复制该对象。 我需要做些什么来确保 将对象 的 副本 插入到列表中,而不仅仅是另外的引用?