我在类中声明了一堆全局常量,现在想在其他类中使用这些常量,而不必总是在常量前面加上它们已声明的类的名称。例如:
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;
无效。有没有办法实现我想要的?如果是的话,我该怎么做?
答案 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()方法中使用相同的代码,并允许轻松维护代码。