C# 访问另一个类中的静态属性';c语言中的非静态构造函数#

C# 访问另一个类中的静态属性';c语言中的非静态构造函数#,c#,C#,我试图在另一个类的非静态构造函数中访问普通类(ClassA.StaticPropertyXX)的静态属性。ClassA是一个普通的班级 它很好用。我需要知道这是不是正确的方法。 请告诉我。没有什么可以阻止您这样做。您只需要在这些类之间内置耦合。对ClassA的更改可能会影响(甚至中断)其他类。因此,如果可以的话,你应该避免它。你可能遇到的情况: 您没有命名空间的using语句,因此ClassA不可用。这可以通过使用语句添加或指定完整名称空间来解决 名称ClassA与其他名称冲突。这可以通过使用

我试图在另一个类的非静态构造函数中访问普通类(ClassA.StaticPropertyXX)的静态属性。ClassA是一个普通的班级

它很好用。我需要知道这是不是正确的方法。
请告诉我。

没有什么可以阻止您这样做。您只需要在这些类之间内置耦合。对ClassA的更改可能会影响(甚至中断)其他类。因此,如果可以的话,你应该避免它。

你可能遇到的情况:

  • 您没有命名空间的
    using
    语句,因此
    ClassA
    不可用。这可以通过使用语句添加
    或指定完整名称空间来解决
  • 名称
    ClassA
    与其他名称冲突。这可以通过使用
    语句在
    中为命名空间创建别名来解决
  • 静态属性不是公共的
只要您有权访问
ClassA
类型,就可以访问其中的公共静态属性。

而不是:

class MyClass
{
    private int _value;

    public MyClass()
    {
        _value = OtherClass.StaticInt;
    }
}
赞成:

class MyClass
{
    private int _value;

    public MyClass(int valueForConstruction)
    {
        _value = valueForConstruction;
    }
}
MyClass
OtherClass
解耦,即使您这样做:

MyClass c = new MyClass(OtherClass.StaticInt);

你试过了吗?如果做得好,可能没有问题……是的,效果很好。但是我不确定这样做是否正确。你可以在同一时间尝试并做出几次不同的尝试,而不是发布一个问题。@Deefa有很多原因说明这是错误的方法。如果类的构造依赖于一个值,那么不要将该值硬编码为对静态成员的调用,而是创建一个接受参数的构造函数。这就是它们的作用。我实际上需要设置静态值并在其他地方使用它。@Deefa然后简单地使用静态作为构造函数参数。谢谢Guffa。所以我写的代码很好。我在同一名称空间中有ClassA,并且可以访问它。@Deefa:是的。以这种方式访问属性并不常见,因此,如果有更好的解决方案,自然会产生问题。:)