2016-03-22 17 views
1

Basit hesaplamaları gerçekleştirebilecek C# .Net kullanarak bir pencere formunda bir metin kutusu oluşturmak istiyorum. Örneğin, kullanıcı =5*7 metin kutusuna yazarsa, metin kutusu textbox.Text = 35 doğrulanır.Hesaplama formülünü içeren metin kutusu

Sorum, hesaplamaları yapmak için "=5*7" dizgisini doubles ve simgelerine nasıl dönüştürebilirim.

+2

bu [SO soruya] bir göz (http atın nasıl kullanılacağı burada CodeAnalysis.CSharp.Scripting kütüphane kullanımı : //stackoverflow.com/questions/355062/is-there-a-string-math-evaluator-in-net). –

+0

@ AlessandroD'Andria Aradığım şey bu! – Charitini

+0

Bu bir kopyası olabilir, ancak bu gönderideki yanıtlar CSharp.Scripting'i önermez, ki bu imo, bunlardan herhangi birine üstün bir çözümdür. – Crowcoder

cevap

0

CodeAnalysis.CSharp.Scripting kütüphanesini bunun için kullanabilirsiniz.

< paket id = "Microsoft.CodeAnalysis.Analyzers" version = "1.1.0" targetFramework = "net461"/> < paket id = "Microsoft: Bu available from Nuget

using Microsoft.CodeAnalysis.CSharp.Scripting; 
using System; 

namespace ExpressionParser 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      //Demonstrate evaluating C# code 
      var result = CSharpScript.EvaluateAsync("System.DateTime.Now.AddDays(-1) > System.DateTime.Now").Result; 
      Console.WriteLine(result.ToString()); 

      //Demonstrate evaluating simple expressions 
      var result2 = CSharpScript.EvaluateAsync(" 5 * 7").Result; 
      Console.WriteLine(result2); 
      Console.ReadKey(); 
     } 
    } 
} 

Nuget paketleri olduğunu. CodeAnalysis.Common "version = "1.1.1" targetFramework = "net461"/ > < paket id = "Microsoft.CodeAnalysis.CSharp" version = "1.1.1" targetFramework = "net461"/ > < paket id =" Microsoft.CodeAnalysis.CSharp.Scripting "ver sion = "1.1.1" targetFramework = "net461" = "1.1.1" targetFramework = "net461"/> < paket id = "Microsoft.CodeAnalysis.Scripting" sürüm/> < paket id = "Microsoft.CodeAnalysis. Scripting.Common" version = "1.1.1" targetFramework = "net461"/ >

+0

"Microsoft.CodeAnalysis.CSharp.Scripting 1.1.1" nuget paketini dahil etmeyi denedim, ancak Microsoft.CodeAnalysis.CSharp.Scripting' ad alanını içermiyordu - bu yüzden örnek makinemde derlenmeyecek. Göründüğü gibi, 'CSharpScript' mevcut değil. Bunun üzerine bir ışık tutabilir misiniz lütfen? – Matt

+0

@Matt Nuget paketleri için düzenleme konusuna bakın – Crowcoder

+0

Haklısınız, teşekkür ederim, paketi boş bir konsol projesine ekledim ve kodunuzu ekledim. Anahtar, nuget paketini eklemeden önce çerçeve sürümünü 4.6.1 olarak değiştirmektir - Benim durumumda, çerçeve için varsayılan ayar, çalışmayan 4.5.2 idi (bir şeyleri içe aktarmaya çalışıyor ancak başarısız oluyordu). Bu değişiklikten sonra, anında çalıştı. – Matt