假设我想创建一个常量,它会在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问题,但我不确定我是否正在接近这个问题。
答案 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:这是一个不那么漂亮的解决方案:使用枚举和函数来做一些数学并返回正确的双重结果。