C# - 使用来自另一个类的符号而不用类名限定

时间:2011-08-10 13:19:44

标签: c#

我在类中声明了一堆全局常量,现在想在其他类中使用这些常量,而不必总是在常量前面加上它们已声明的类的名称。例如:

namespace SomeName
{
   public class Constants
   {
      public const int SomeConstant = 1;
   }

   public class SomeClass
   {
      void SomeFunc ()
      {
         int i = Constants.SomeConstant;
      }
   }
}

我想从Constants.中省略Constants.SomeConstant。使用import SomeName.Constants;无效。有没有办法实现我想要的?如果是的话,我该怎么做?

4 个答案:

答案 0 :(得分:3)

不,你无法做到这一点。

阅读了你的评论(“......像这样导入类这样的类缩短了数学代码”)我可以建议这个邪恶的代码:

class MathCalculations
{
    private Func<double, double, double> min = Math.Min;
    private Func<double, double, double> max = Math.Max;
    private Func<double, double> sin = Math.Sin;
    private Func<double, double> tanh = Math.Tanh;

    void DoCalculations()
    {
        var r = min(max(sin(3), sin(5)), tanh(40));
    }
}

答案 1 :(得分:1)

您最接近的是使用非常短的namespace alias

using C = Constants;

C.SomeContant;

答案 2 :(得分:0)

除了使用继承(这是真的坏主意;不要这样做)之外,没有办法做到这一点。 (特别是,如果您正在考虑尝试使用using指令别名,那只能使命名空间或类型,而不是类型的成员。)

正如Oded指出的,你可以将“常数”减少到“C”,但我个人不会。

答案 3 :(得分:0)

我同意双向飞碟,但你可以:

1)创建一个静态类

public static class Constants{
    public static const int SomeConstant = 1;
}

2)向SomeClass

添加struct属性
public struct Constants{
    public const int SomeConst = 1;
}

这两种方法都允许您在SomeFunc()方法中使用相同的代码,并允许轻松维护代码。