C#で文字列を演算子に変換したい
**string type = "+";
int d = 22;
int c = 33;
int total;
total = d + type + c;**
どうやってするか ?
よろしく、
C#で文字列を演算子に変換したい
**string type = "+";
int d = 22;
int c = 33;
int total;
total = d + type + c;**
どうやってするか ?
よろしく、
文字列を「演算子」に変換することはできません。演算子はそのオペランドに対して定義されており、オペランドが何であるかがわからない場合、文字列を演算子に変換しても意味がありません。
持っているオペランドを知っていると仮定すると、問題はもはや「変換」自体ではなく、実際には解析エンジンを構築しようとしています。これはかなり難しい問題です。実際に独自のスクリプト言語などを作成しようとしている場合を除き、テーブル内の各要素がオペランドで実行できる何らかのメソッドを参照するルックアップ テーブルを使用する方がおそらく簡単です。
C# では、単純なswitch
ステートメントを使用してこのようなデータ構造を実装することができます (もちろん、無限に好きなだけ凝ったものにすることができますが、これが最も簡単な解決策です)。
switch( type )
{
case "+":
return plusOperator(d, c);
case "-":
return minusOperator(d, c);
}
plusOperator
次に、やなどの適切なメソッドを定義してminusOperator
、プログラムのロジックを実際に実装します。
このソリューションは、特定の動作をハードコーディングしているという点でかなり汚れていますが、実際には、優れたシステムアーキテクチャに関してこれ以上のものを望む場合、解析の問題になります。この道をたどると、Gang of Four デザイン パターンが参考資料として役立ちます (特に、インタープリター、イテレーター、コンポジットなどのパターン)。