全局常数是否可能?

时间:2015-05-13 06:04:47

标签: c#

是否可以声明全局常量?也就是说,所有类中都有常量?当我尝试在类之外声明一个常量时,就像我对枚举一​​样,我得到一个解析错误。

我一直以这种方式使用枚举,但枚举仅限于整数,我想使用易于使用的单词而不是浮点值。

实施例;我想在任何课程中都可以使用以下内容:

const float fast   = 1.5f;
const float normal = 1f; 
const float slow   = .75f;

我知道我可以通过为速度名称创建枚举(速度)来解决这个问题,然后创建一个静态方法SpeedNum()来读取枚举Speedreturn的相关值,但每次都需要这么多额外的写作,我希望有更优雅的东西:

例如:

public double function SpeedNum(Speed speed) 
{
    switch (speed)
    {
        case speed.fast:   return 1.5;
        case speed.normal: return 1f;
        case speed.slow:   return .75f;
    }
}

3 个答案:

答案 0 :(得分:15)

创建一个静态类,例如调用包含常量的String test = "<html>" + "<head>" + "<style type='text/css'>" + "@font-face {" + " font-family: MyFont;" + " src: url('file:///android_asset/fonts/bnazanin.ttf')" + "}" + "body {" + " font-family: MyFont;" + " font-size: medium;" + " text-align: justify;" + "}" + "</style>" + "</head>" + "<body>" + "سلام دوستان" + "</body>" + "</html>"; webView.loadDataWithBaseURL("", test + "", "text/html", "UTF-8", ""); 并使用Constants访问它们。

Constants.MyConstant

回答你的隐含问题:你不能在类之外声明常量。

答案 1 :(得分:3)

MSDN为您的问题提供答案,说明为什么您不能在课外使用它:

  

const关键字用于修改字段或本地的声明   变量

因此,您的字段或局部变量可以出现在类中,这意味着您不能拥有全局const

你可以更好地创建一个只有这样的常量的类:

public static class GlobalConstant
{
    public const float fast = 1.5f;
    public const float normal = 1f; 
    public const float slow = .75f;
}

然后你可以像这样使用它:

class MyProgram
{
    public static void Main()
    {
        Console.WriteLine(GlobalConstant.fast);
    }
}

答案 2 :(得分:3)

如果您的目标是C#版本6或更高版本,并且您不想使用传统的“static_class_name.Thing”,则可以使用C#6中引入的using static

// File 1
public static class Globals
{
    public const string bobsName = "bob!";
}

// File 2
using System;
using static Globals;

class BobFinder
{
    void Run() => Console.WriteLine(bobsName);
}

句法糖。但我发现它很漂亮。