C#-使用其他类中的符号,但不使用classname限定

C#-使用其他类中的符号,但不使用classname限定,c#,C#,我已经在一个类中声明了一组全局常量,现在想在其他类中使用这些常量,而不必总是在常量前面加上声明它们的类的名称。例如: namespace SomeName { public class Constants { public const int SomeConstant = 1; } public class SomeClass { void SomeFunc () { int i = Constants.Som

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

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

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

我想从
常量中省略
常量。
。SomeConstant
。使用
导入SomeName.Constants不起作用。有没有办法实现我想要的?如果是,我该怎么做?

除了使用继承(这是一个非常糟糕的主意;不要这样做)之外,没有办法做到这一点。(特别是,如果您正在考虑尝试使用指令别名,则该别名只能对命名空间或类型进行别名,而不能对类型的成员进行别名。)


正如奥德所指出的,你可以将“常数”减少到“C”,但我个人不这么做。

最接近的方法是使用一个非常短的:


不,你不可能做到

阅读了您的评论(“以这种方式导入一个类似数学的类会使数学代码缩短一点”),我可以建议您使用以下代码:

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));
    }
}
类数学计算
{
private Func min=Math.min;
private Func max=Math.max;
private Func sin=Math.sin;
private Func tanh=Math.tanh;
无效数据计算()
{
var r=最小值(最大值(sin(3)、sin(5))、tanh(40));
}
}

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

1) 创建一个静态类

public static class Constants{
    public static const int SomeConstant = 1;
}
2) 将结构属性添加到SomeClass

public struct Constants{
    public const int SomeConst = 1;
}

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

不,这不起作用。也许你的意思是
使用C=常量?谢谢,但如果这是接近我所寻找的内容的唯一方法,我认为最好使用实际源代码类的全名,以避免混淆源代码。这样做的动机是什么?听起来像是个坏消息idea@BrokenGlass通过这种方式导入一个类,如
Math
,可以稍微缩短数学代码,并且IMO使其更易于阅读。不幸的是,我知道在C#中没有办法做到这一点。BrokenGlass,你可能应该与C#规范和开发团队分享你的见解,他们让所有的C#系统库都能做到这一点——也许他们在这里犯了一个严重的错误,或者不是吗?不,我想这样做的原因是我的应用程序中有一堆全局常量,不想在整个应用程序中都用它们的类名作为前缀。从阅读和理解源代码的角度来看,这对我来说是完全多余的。。。我害怕这个答案…:(LOL-我知道我真的不应该使用继承来实现这一点。2)对我来说没有意义,因为我需要一堆其他类中的常量。1) 似乎不起作用-我仍然必须写“常量。SomeConstant”(或者我还没有真正理解你的命题)。
public struct Constants{
    public const int SomeConst = 1;
}