Tag: oop

在非静态类中调用静态方法时是否实例化了类?

究竟在Bar类中调用Foo.SomeCheck()时会发生什么? 是否为了调用SomeCheck()而创建了一个Foo实例? 如果是这样,这个实例是否存储在堆上,是否通过垃圾收集收集? public class Foo() { public static bool SomeCheck() { return true; } } public class Bar() { public void SomeMethod() { // what happens when we access Foo to call SomeCheck? if (Foo.SomeCheck()) { //do something } } }

在C#中使用’new’修饰符

我读到new修饰符隐藏了基类方法。 using System; class A { public void Y() { Console.WriteLine(“AY”); } } class B : A { public new void Y() { // This method HIDES AY // It is only called through the B type reference. Console.WriteLine(“BY”); } } class Program { static void Main() { A ref1 = new A(); // Different […]

私有嵌套静态类 – 好或坏的做法?

将私有静态类嵌套在非静态类中会被认为是一种不好的做法吗? public class Outer { private static class Inner { } } 这里的想法是’Outer’的所有实例都将共享对静态的访问。 另一种方法可能是让Inner类是非静态的并使用它的静态实例: public class Outer { private static innerInstance = new Inner(); private class Inner { } } 类似的效果。 这种方法有哪些优缺点或其他考虑因素? 我必须承认,我几乎从不使用嵌套类,无论是否静态,但我对这个特定的概念感兴趣。

.NET工具为代理类生成包装器

使用SvcUtil我为SOAP WebService生成了代理。 这个Web服务有许多复杂的类型,每年都可以更改。 有没有一个工具可以用来为所有类生成包装器。 在包装器类中使用组合我将调用代理类。

在c#中学习OOP规则的最佳方法或最佳实践

我发现C#非常有趣……但不幸的是(或幸运的是!)它有很多function来实现OOP规则……它们有不同的机制,让我有时会感到困惑…. c#中的virtual,new,…修饰符有不同的规则….那么学习OOP规则并轻松使用它们的最佳方法或最佳实践是什么? 那么学习OOP规则并轻松使用它们的最佳方法或最佳实践是什么?

将事件视为对象

C#还不够OO吗? 在这里,我给出一个(可能是坏的)例子。 public class Program { public event EventHandler OnStart; public static EventHandler LogOnStart = (s, e) => Console.WriteLine(“starts”); public class MyCSharpProgram { public string Name { get; set; } public event EventHandler OnStart; public void Start() { OnStart(this, EventArgs.Empty); } } static void Main(string[] args) { MyCSharpProgram cs = new MyCSharpProgram { Name = […]

受保护的内部类在类中工作但不在外部工作

我正在尝试一些事情,并想知道为什么会发生这种情况。 说,我在命名空间n中有一个名为A的类,我试图创建受保护的内部类B. namespace n { public class A { public A() { } } protected internal class B //throwing error { } } 但是当我尝试这样的时候(B作为A的子类),它不会抛出错误并且它的成功。 你能解释一下为什么会这样吗? namespace n { public class A { public A() { } protected internal class B // its not throwing error { } } } 理论上我错过了什么吗? 它有点令人困惑。

当多重inheritance不是一个选项时,如何重用代码?

我想利用我几个旧测试类中的一些方法进入我正在构建的新类中。 不幸的是,C#不支持多重inheritance。 如何重用这些旧类中的代码? 我只是将它们创建为成员对象吗? 或者我还有其他选择吗?

抽象类的特征

我想知道是什么使一个类被称为抽象类。 我相信,abstract关键字肯定会创建一个类,但如果取出关键字,那么我们就可以创建该类的实例。 换句话说,抽象类的特征是什么。 提前致谢。 -Harsha

如何在DataGrid中显示分组数据? – 摘要行

我有这门课: public enum KindOfPerson { Student, Teacher, … } public class Person { // This contains only numbers between 0 and 1 public double ScorePercent { get; set; } public KindOfPerson Type { get; set; } } 我有一个人员列表,然后我应用这个LINQ函数,得到另一个由KindOfPerson分类的列表,并计算属于该KindOfPerson的所有人的平均得分: var groupedLists = peopleList.GroupBy(person => person.Type) .OrderBy(group => group.Key) .Select(group => new { People = group.ToList(), AverageScore […]