是否可以声明全局常量?也就是说,所有类中都有常量?当我尝试在类之外声明一个常量时,就像我对枚举一样,我得到一个解析错误。
我一直以这种方式使用枚举,但枚举仅限于整数,我想使用易于使用的单词而不是浮点值。
实施例;我想在任何课程中都可以使用以下内容:
const float fast = 1.5f;
const float normal = 1f;
const float slow = .75f;
我知道我可以通过为速度名称创建枚举(速度)来解决这个问题,然后创建一个静态方法SpeedNum()
来读取枚举Speed
和return
的相关值,但每次都需要这么多额外的写作,我希望有更优雅的东西:
例如:
public double function SpeedNum(Speed speed)
{
switch (speed)
{
case speed.fast: return 1.5;
case speed.normal: return 1f;
case speed.slow: return .75f;
}
}
答案 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);
}
句法糖。但我发现它很漂亮。