Tag: nested class

嵌套类.GetType()

在弄乱嵌套类并将类型名称输出到控制台窗口时,我注意到了一些奇怪的事情。 我想知道是否有人可以为我解释一下。 在主类上调用GetType()时,它返回我期望的内容,即相关名称空间后面的类的名称。 即Namespace.Namespace.Classname 但是,当我从封闭类中调用一个函数来返回嵌套类的类型时,我得到返回的值,如下所示: Namespace.Namespace.ClassNameEnclosing + ClassNameNested. 为什么它不是简单地以点符号返回。 为何选择+符号? 我只是好奇在后台发生了什么导致这种表示法。

Lambda具有嵌套类

我刚刚发布了这个问题但得到了我的问题的部分答案,所以我想我发布了更多的解释,希望得到一个更准确的答案。 我有2个class: public class Employee { public string Name { get; set; } public List Cars { get; set; } } public class Car { public int CarID { get; set; } public CarTypes CarType { get; set; } public enum CarTypes { Van, SmallCar } } 我试图只获得所有使用Lambda分配了使用SmallCars忽略那些货车的员工,我尝试了这一行: List EmployeesWithVans = AllEmployees.Where(emps => emps.Car.Any(cartype => […]

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

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

C#:私有内部接口可能吗?

我有一个通用类X ; 这个类有一个协变部分,我希望能够协同访问。 所以我把它分解成一个接口IX 。 但是,我希望这个接口只对类本身可见,因为它还包含private 。 即,在课堂内部,我可以向上升到IX并且共同使用它。 例如: class X : IX { private interface IX{ // the private covariant interface void foo(); } // It grants access to the private method `foo` private T foo(){…} public T IX.foo(){ return foo(); } private static void someMethod(IX x) { // Here I can use `x` […]

嵌套类构造函数的可见性

有没有办法限制C#中嵌套类的实例化? 我想防止嵌套类从除嵌套类之外的任何其他类实例化,但允许从其他代码完全访问嵌套类。

C#中的inheritance+ NestedClasses

我们可以在C#中使用嵌套类。 这些嵌套类也可以inheritanceOuterClass。 例如: public class OuterClass { // code here public class NestedClass : OuterClass { // code here } } 完全可以接受。 我们也可以在不将NestedClass作为OuterClass的嵌套类的情况下实现这一点,如下所示: public class OuterClass { // code here } public class NestedClass : OuterClass { // code here } 我想知道,上面两个场景之间有什么区别? 在方案I中可以实现的是在方案II中无法实现的? 通过使NestedClass“嵌套”到OuterClasss,我们能得到更多的东西吗?

“公共”嵌套类与否

假设我有一个“应用程序”类。 为了初始化,它需要在构造函数中进行某些设置。 我们还假设设置的数量太多,以至于将它们放在自己的类中是很有吸引力的。 比较此方案的以下两种实现方式。 实施1: class Application { Application(ApplicationSettings settings) { //Do initialisation here } } class ApplicationSettings { //Settings related methods and properties here } 实施2: class Application { Application(Application.Settings settings) { //Do initialisation here } class Settings { //Settings related methods and properties here } } 对我来说,第二种方法更为可取。 它更具可读性,因为它强调了两个类之间的关系。 当我编写代码以在任何地方实例化Application类时,第二种方法看起来更漂亮。 现在想象一下,Settings类本身又有一些类似的“相关”类,而这个类反过来也是如此。 只有三个这样的级别,类命名在’非嵌套’的情况下失控。 然而,如果你筑巢,事物仍然保持优雅。 尽管如此,我还是读过人们在StackOverflow上说嵌套类只有在外部世界不可见的情况下才是合理的。 […]

嵌套类:无法访问静态上下文中的非静态字段

我有一个带有一些内部变量的C类。 它有一个嵌套的类N,它想要访问C中的变量。虽然C有一些静态方法和变量,但C和N都不是静态的。 当我尝试从NI访问C中的非静态变量时,获得波浪线下划线和消息“无法在静态上下文中访问非静态字段[fieldname]”。 这似乎与嵌套类有关,因为我可以从封闭类本身访问变量。 ReSharper建议我制作_t静态,但这不是一个选择。 我该如何处理? public sealed partial class C { string _t; class N { void m() { _t = “fie”; // Error occurs here } } }

嵌套类型问题

我只是试图创建这个简单的实现: class Test { private int abc = 0; public class TestClass { private void changeABC() { abc = 123; } } } 如果我编译它,它会抱怨: 无法通过嵌套类型“B.Test.TestClass”访问外部类型“A.Test”的非静态成员 我不喜欢设置的解决方案: static int abc = 0; 还有其他解决方案吗?

c#公共嵌套类或更好的选项?

我有一个控制电路,它有多种设置,可以连接任意数量的传感器(每个传感器都有自己的设置)。 这些传感器只能与控制电路一起使用。 我想过使用嵌套类,如下所示: public class ControlCircuitLib { // Fields. private Settings controllerSettings; private List attachedSensors; // Properties. public Settings ControllerSettings { get { return this.controllerSettings; } } public List AttachedSensors { get { return this.attachedSensors; } } // Constructors, methods, etc. … // Nested classes. public class Settings { // Fields. private ControlCircuitLib controllerCircuit; private […]