2017-07-26 15 views
0

C#でdoubleという交換手数料を返す定数を作成したいとしましょう。ここで私はJavaScriptでどうなるのかです:C#Consoleアプリケーションで複数の値を含む定数を書き込む方法

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

この方法では、私はこれをインポートして、それが列挙型の一種として働くことができます:exchangeFees.fidelityは私が必要な料金になるだろう、と明らかです。活字体で、私は少し少ない合理的な何かをするだろう:

//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(); 

これはハック-AS-地獄ようだが、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の質問であることを認識していますが、私はこれをきれいに近づいているとは確信していません。

+1

列挙型の使用を検討しましたか? – Sweeper

+0

はい、iircには実際の値を取得するための追加ステップがあります。 – VSO

+0

@Sweeper正しく読めば、double型の列挙型を持つことはできません。 –

答えて

1

あなたが持っているものは問題ありません。代わりに、次のように書くこともできます。

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

フィールドを一定にするためです。しかし、それ自体の欠点がある、hereを参照してください。

しかし、あなたの値は実際には定数ではないように見えます。ほとんどの場合、あなたのコードに焼き付けるべきではありません。いくつかのタイプの構成システムを使用する必要があります。 AppSettings にこの機能を提供しますが、私には正しい場所のようには見えません。私は、起動時にアプリケーションが読み込む設定ファイルまたはデータベースを持っています。

次に、あなたのコードをそのまま使用しますが、ハードコードされた値を(必要に応じてキャッシュされた)コンフィギュレーションのルックアップに置き換えてください。

0

これを行うにはいくつかの方法があります。
1:既に述べたように、定数を含む静的クラスを作成できます。
2:あなたのクラス
3で定数を作成します。列挙型は動作しない、それだけでint型を使用し、あなたの例では、あなたはダブルス
4を使用して:あなたはAnonymous classを使用するには、いくつかの方法を見つけ出すことができます。
5これはあまりにも美しくない解決法です。計算を行うenumと関数を使用し、適切なdouble結果を返します。

関連する問題