##やりたいこと/実現したいこと
(C#)
string型の計算式を計算して結果を出力したい
##現状
System.InvalidCastException: 指定されたキャストは有効ではありません。
##コード
C#
1string com = Console.ReadLine(); 2try 3{ 4 DataTable dt = new DataTable(); 5 decimal an = (decimal)dt.Compute(com, ""); 6 Console.WriteLine(an); 7} 8catch (Exception teste) 9{ 10 Console.WriteLine(teste); 11}
##現在のusingネイティブ
C#
1using System; 2using System.IO; 3using System.Data; 4using System.Threading; 5using System.Diagnostics; 6using System.Text; 7using System.Text.RegularExpressions; 8using System.Net; 9using System.Collections.Generic; 10using System.Timers; 11using System.Security.Permissions; 12using System.Security.Principal; 13using System.Runtime.InteropServices; 14using System.Runtime.InteropServices.ComTypes; 15using System.ComponentModel; 16using Microsoft.Win32.SafeHandles; 17using System.Runtime.ConstrainedExecution; 18using System.Security; 19using System.Security.Policy; 20using System.Security.Cryptography;
##環境
コンソールアプリ(.NET Flamework)
どなたかよろしくお願いいたします。
あと、何のusingネイティブが必要か教えて頂けるとうれしいです。
たとえば、「1 + 1」とかを入力して答え「2」を出したい、ということでしょうか?
なぜ、DataTableを使おうと思ったんですか?
何がしたいのか分かりません。以前の質問者さんのスレッドでもお願いしましたが、一度 https://teratail.com/help/question-tips を読んでください。ここに書いてないことは知り得ない第三者が読んで誤解なく分かるように質問を言語化するのはどうしたらよいか、よく考えて書いていただければと思います。
式列で好きな計算ができるわけではありません。どのような計算ができるのかこのページを見てください。
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.datacolumn.expression?view=netcore-3.1
DataTable を使う必要はなく、単に文字列から計算をしたいだけである場合、少し情報が古いかもしれませんが、次のページが役立つと思います。
https://dobon.net/vb/dotnet/programing/eval.html
DataTable dt = new DataTable();
dt.Compute("1+1","");
で一応計算はできます。
ありがとうございます。
usingネイティブは、
using System.Data;
だけで大丈夫でしょうか?
usingディレクティブが「using System.Data;」だけで大丈夫かどうかは私には判断できません。
DataTableを全部System.Data.DataTableと書けば「using System.Data;」も必要ないでしょう。
usingディレクティブがいったい何なのかを理解された方がいいかと思います。
いわゆる環境変数みたいな物と考えた方が良いんですか?
ありがとうございました。
回答1件
あなたの回答
tips
プレビュー