如何在C#Console应用程序中编写包含多个值的常量?

时间:2017-07-26 00:31:08

标签: c#

假设我想创建一个常量,它会在C#中为double返回交换费用。以下是我在JavaScript中的操作:

var exchangeFees = {
  fidelity: .25,
  etrade: .2,
  scottTrade: .15
}

这样,我可以导入它并让它作为一种枚举工作:exchangeFees.fidelity会得到我需要的费用,并且很清楚。在Typescript中,我会做一些不那么理性的事情:

//I just realized this could just be a static class after I typed this
export class ExchangeFees {
  FIDELITY: number;
  ETRADE: number;
  SCOTTTRADE: number; 

  constructor() {
    this.FIDELITY= .25;
    this.ETRADE= .2;
    this.SCOTTTRADE = .15;

  }
}

export const exchangeFees : ExchangeFees = new ExchangeFees ();

这看起来像hacky-as-hell,但是Javascript,whatchu会做的等等。这在C#中看起来很简陋,但是,我只是创建一个静态类并将它放在Constants.cs这样的文件中吗?还有更好的方法吗?

public static class ExchangeFess
{
    public static double Fidelity = .25;
    public static double Etrade = .2;
    public static double ScottTrade = .15;
}

我看了答案here,我应该以某种方式将其放入AppSettings还是没有意义?

我意识到这是101问题,但我不确定我是否正在接近这个问题。

2 个答案:

答案 0 :(得分:1)

你有什么好。另一种方法是写:

public sealed class ExchangeFess
{
    public const double Fidelity = .25;
    public const double Etrade = .2;
    public const double ScottTrade = .15;
}

为了使场保持不变。但是,它有自己的缺点,请参阅here

但是,您的值似乎并不是恒定的,几乎绝对不应该在您的代码中加入。您应该使用某种类型的配置系统。 AppSettings 提供此功能,但对我来说似乎不是放置它的正确位置。我有一个配置文件或数据库,应用程序在启动时读取。

然后,按原样使用您的代码,但将硬编码值替换为(可选的高速缓存)查找到配置。

答案 1 :(得分:0)

有几种方法可以做到这一点:
1:你可以按照你已经说过的那样做,并创建一个包含常量的静态类 2:在你的班级中创建常数
3:枚举不起作用,它只使用整数,在你的例子中,你使用双打
4:你可以找出使用Anonymous class的方法 5:这是一个不那么漂亮的解决方案:使用枚举和函数来做一些数学并返回正确的双重结果。