Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#作用为整数_C#_Action - Fatal编程技术网

C#作用为整数

C#作用为整数,c#,action,C#,Action,谢谢大家我在Daniel Hilgarth的帮助下完成了我的产品计划 我不知道如何解释我想问的问题,所以我会尝试向你展示 我希望a是一个数字,比如说5 b是一个数字,例如3,M是一个动作 我想写一些这样的东西: if(c == 6) { M = " * "; } if(c == 7) { M = "/"; } if( a M b == 15) { lable1.Text = " Hi"; } 程序显示如果c=6 M将是多点动作,a M b将是5*3=15 请帮我写

谢谢大家我在Daniel Hilgarth的帮助下完成了我的产品计划

我不知道如何解释我想问的问题,所以我会尝试向你展示

我希望a是一个数字,比如说5

b是一个数字,例如3,M是一个动作

我想写一些这样的东西:

if(c == 6)
{ 
    M = " * "; 
}
if(c == 7)
{ 
    M = "/";
}
if( a M b == 15)
{
    lable1.Text = " Hi";
}
程序显示如果c=6 M将是多点动作,a M b将是5*3=15

请帮我写,因为我不知道怎么写


让我自我解释一下,我想要一个命令行,比如if(ambdnckd==25){lable1.Text=“hi”}和一个bcd是用“for”改变的数字,而mnk是也用“for”改变的数学运算字符串,每次程序检查ambdnckd==25…
Func M/*=null;??*/;
    Func<int, int, int> M/* = null; ??*/;
    switch (c)
    {
        case 6:
            M = (i,j) => i*j;
            break;
        case 7:
            M = (i,j) => i/j;
            break;
    }

    int a = 5;
    int b = 3;

    if (15 == M(a,b))
                  lable1.Text = " Hi";
开关(c) { 案例6: M=(i,j)=>i*j; 打破 案例7: M=(i,j)=>i/j; 打破 } INTA=5; int b=3; 如果(15==M(a,b)) 标签1.Text=“Hi”;
您需要操作的默认初始化,我将留给您想象

Func M/*=null;??*/;
开关(c)
{
案例6:
M=(i,j)=>i*j;
打破
案例7:
M=(i,j)=>i/j;
打破
}
INTA=5;
int b=3;
如果(15==M(a,b))
标签1.Text=“Hi”;
你需要一个动作的默认初始化,我会让你想象一下

怎么样

int result;
if(c == 6) 
  { result=a*b; } 
else if(c == 7) 
  { result = a/b} 

if( result == 15) { lable1.Text = "Hi"; }
那怎么办

int result;
if(c == 6) 
  { result=a*b; } 
else if(c == 7) 
  { result = a/b} 

if( result == 15) { lable1.Text = "Hi"; }

你可以这样做:

Func<int, int, int> M = null;
if(c == 6)
{ 
    M = (x, y) => x * y; 
}
if(c == 7)
{ 
    M = (x, y) => x / y; 
}
if(M != null && M(a, b) == 15)
{
    lable1.Text = " Hi";
}
Func M=null;
如果(c==6)
{ 
M=(x,y)=>x*y;
}
如果(c==7)
{ 
M=(x,y)=>x/y;
}
如果(M!=null&&M(a,b)==15)
{
标签1.Text=“Hi”;
}
更新后,情况会变得更复杂:

Func<int, int, int> M = null;
Func<int, int, int> N = null;
Func<int, int, int> K = null;
if(c == 6)
{ 
    M = (x, y) => x * y; 
}
if(c == 7)
{ 
    M = (x, y) => x / y; 
}
// Similar initialization if N and K

if(M == null || N == null || K == null)
    return;

if(K(N(M(a, b), c), d) == 25)
{
    lable1.Text = " Hi";
}
Func M=null;
Func N=null;
Func K=null;
如果(c==6)
{ 
M=(x,y)=>x*y;
}
如果(c==7)
{ 
M=(x,y)=>x/y;
}
//如果N和K,则进行类似的初始化
如果(M==null | | N==null | | K==null)
回来
如果(K(N(M(a,b),c),d)==25)
{
标签1.Text=“Hi”;
}
但这越来越荒谬了……

我认为最好使用数学解析器。

您可以这样做:

Func<int, int, int> M = null;
if(c == 6)
{ 
    M = (x, y) => x * y; 
}
if(c == 7)
{ 
    M = (x, y) => x / y; 
}
if(M != null && M(a, b) == 15)
{
    lable1.Text = " Hi";
}
Func M=null;
如果(c==6)
{ 
M=(x,y)=>x*y;
}
如果(c==7)
{ 
M=(x,y)=>x/y;
}
如果(M!=null&&M(a,b)==15)
{
标签1.Text=“Hi”;
}
更新后,情况会变得更复杂:

Func<int, int, int> M = null;
Func<int, int, int> N = null;
Func<int, int, int> K = null;
if(c == 6)
{ 
    M = (x, y) => x * y; 
}
if(c == 7)
{ 
    M = (x, y) => x / y; 
}
// Similar initialization if N and K

if(M == null || N == null || K == null)
    return;

if(K(N(M(a, b), c), d) == 25)
{
    lable1.Text = " Hi";
}
Func M=null;
Func N=null;
Func K=null;
如果(c==6)
{ 
M=(x,y)=>x*y;
}
如果(c==7)
{ 
M=(x,y)=>x/y;
}
//如果N和K,则进行类似的初始化
如果(M==null | | N==null | | K==null)
回来
如果(K(N(M(a,b),c),d)==25)
{
标签1.Text=“Hi”;
}
但这越来越荒谬了……
我认为最好使用数学解析器。

这个怎么样

var calc = 0;
if(c == 6)
{ 
    calc = a * c; 
}
else
{
    if(c == 7)
    { 
        calc = a / c;
    }
}
if( calc == 15 )
{
    lable1.Text = " Hi";
}
希望这有帮助。

这个怎么样

var calc = 0;
if(c == 6)
{ 
    calc = a * c; 
}
else
{
    if(c == 7)
    { 
        calc = a / c;
    }
}
if( calc == 15 )
{
    lable1.Text = " Hi";
}
希望这能有所帮助。

还有另一种方法:

Dictionaty<int,Func<int,int,int>> operations = new Dictionaty<int,Func<int,int,int>>();
operations.Add(6, (x,y) => x*y);
operations.Add(7, (x,y) => x/y);
... 
var result = operations[c](a,b);
dictionary operations=new dictionary();
加上(6,(x,y)=>x*y);
增加(7,(x,y)=>x/y);
... 
var结果=操作[c](a,b);
例如,您可以在[static]构造函数中定义字典

-编辑-

阅读编辑后,听起来你真的在寻找一个约束解算器,一个给定多个变量和多个约束的程序,找到一个解决方案。也许您应该签出或其他:)

另一种方式:

Dictionaty<int,Func<int,int,int>> operations = new Dictionaty<int,Func<int,int,int>>();
operations.Add(6, (x,y) => x*y);
operations.Add(7, (x,y) => x/y);
... 
var result = operations[c](a,b);
dictionary operations=new dictionary();
加上(6,(x,y)=>x*y);
增加(7,(x,y)=>x/y);
... 
var结果=操作[c](a,b);
例如,您可以在[static]构造函数中定义字典

-编辑-


阅读编辑后,听起来你真的在寻找一个约束解算器,一个给定多个变量和多个约束的程序,找到一个解决方案。如果你想用语法来编写像
amb
这样的中缀运算符,那么也许你应该检查一下或其他:)

,这在C#中是不可能的


不可能定义编译时已知的新运算符,更不用说变量运算符了。您需要研究代码生成或本质上的字符串解析。我认为Haskell或某些函数式语言可能允许您创建这种语法(可能是F#?),但我很确定,如果您希望用语法来编写中缀运算符,如
amb
,这在C中是不可能的,那么在C中是不可能的


不可能定义编译时已知的新运算符,更不用说变量运算符了。您需要研究代码生成或本质上的字符串解析。我想也许Haskell或某些函数式语言可以让你创建这种语法(也许是F?),但我很确定你所问的在C中是不可能的。

我想jony可能是C的新手,使用func有点意思,但这当然行得通。嗯,这不是他要求的吗?+1用于使用
Func
开关
,但是
Func
不需要默认值,一个
null
就足够了。@codymanix:var不能在这个上下文中使用,更不用说这个例子了@Blindy:您绝对需要一个默认值,或者在调用之前需要对其进行null检查。如前所述,编译器不会接受它(有充分的理由)我想jony可能是C语言的新手,使用func有点吝啬,但这当然会奏效。好吧,这不是他要求的吗?+1用于使用
func
开关,但
func
不需要默认值,
null
就足够了。@codymanix:var不能在这个上下文中使用,更不用说这个例子了@Blindy:您绝对需要一个默认值,或者在调用之前需要对其进行null检查。