标签: expression

从给定的类型创建 Expression<Func<T, object>>

我希望通过在代表给定类型的属性成员访问的代码中构建表达式来动态使用 CsvHelper。

我试图将这些表达式传递给的方法具有以下签名:

    public virtual CsvPropertyMap<TClass, TProperty> Map<TProperty>( Expression<Func<TClass, TProperty>> expression )
    {
        //
    }
Run Code Online (Sandbox Code Playgroud)

因此,对于要映射的任何给定类型,您通常会调用它,如下所示(对于具有名为“stringProperty”的属性的类型):

mapper.Map(x => x.StringProperty);
Run Code Online (Sandbox Code Playgroud)

传入一个 lambda 表达式,该 lambda 表达式在内部转换为 Expression<Func<T, object>>

我尝试使用表达式在代码中创建此表达式。在编译时它一切正常(因为它返回一个Expression<Func<TModel, object>>),但在运行时我得到一个异常“不是成员访问”。这是采用表示我要映射的属性的 PropertyInfo 对象的代码:

    private Expression<Func<TModel, object>> CreateGetterExpression( PropertyInfo propertyInfo )
    {
        var getter = propertyInfo.GetGetMethod();

        Expression<Func<TModel, object>> expression = m => getter.Invoke( m, new object[] { } );
        return expression;
    }
Run Code Online (Sandbox Code Playgroud)

基本上,如何在代码中正确构建该表达式?

c# reflection lambda expression

-1
推荐指数
1
解决办法
1341
查看次数

为什么变量名是一个表达式?

int n=0;
n;
Run Code Online (Sandbox Code Playgroud)

为什么是“n;” 一种表达?它不调用任何操作员等。

c++ expression

-1
推荐指数
1
解决办法
167
查看次数

为什么在这个“switch”语句中第二个表达式的计算结果也为 true?

我希望有人可以帮助我解决一个初学者问题(这是专门在 Arduino 上运行的,但我怀疑这是一个比这更基本的 C++ 问题)。

我不明白为什么以下“switch”语句同时输出“Channel 1”和“Channel 2”语句:

void setup() {
  delay(100);
  Serial.begin(57600);
  delay(100);

  int channel = 1;

  switch (channel) {
    case 1:
      Serial.println("Channel 1");
    case 2:
      Serial.println("Channel 2");
  }
}

void loop() {

}
Run Code Online (Sandbox Code Playgroud)

我读过 switch 语句“follow-though”或“cascade”,即我理解如果满足条件 1,那么代码仍然会继续检查后续条件(并且您可以添加显式的“break”命令)跳出)。这一切都很好。

但我不明白第二个表达式的计算结果为true(因为整数变量channel=1,并且只有当channel=2时它才应计算为true)。

我在这里缺少什么?

谢谢你!

c++ expression arduino switch-statement

-1
推荐指数
1
解决办法
100
查看次数

在']'标记之前的预期表达

代码:

-(void) GoToMainMenu: (id) sender {

    [[CCDirector sharedDirector] sendCleanupToScene];
    [[CCDirector sharedDirector] popScene];
    [[CCDirector sharedDirector] replaceScene:[CCTransitionFade 
                                                transitionWithDuration:1 
                                               scene:[HelloWorldLayer  node: ]]
     ];
}
Run Code Online (Sandbox Code Playgroud)

我一再得到错误"'之前的预期表达'''令牌.

expression objective-c

-2
推荐指数
1
解决办法
236
查看次数

分组逻辑表达式

我如何告诉Python我想要执行以下操作:

if cond1 and (not cond2 or not cond2)
Run Code Online (Sandbox Code Playgroud)

我希望括号中的表达式先执行,然后将结果提供给和.

python expression

-2
推荐指数
1
解决办法
3496
查看次数

正则表达式最少8个字符和至少1个数字

我正在寻找我的JavaScript密码函数的正则表达式,该函数检查用户的密码长度至少为8个字符,其中至少包含1个数字.

谢谢!

javascript regex expression

-2
推荐指数
1
解决办法
6384
查看次数

为什么"for(; i <= 10; i ++)"工作但"for(i = 0; i <= 10 ;;)"不是?

为什么第一个程序不起作用,但第二个程序不起作用?我的意思是,第二个程序给出了错误

"'之前的预期表达';'"

但是为什么然后它不会给"for(; i <= 10; i ++)"同样的东西,因为第一个表达式也缺失了?不是";;" 在第二个程序的"for(i = 0; i <= 10 ;;)"中表示空白表达式?最后,为什么"for(i = 0; i <= 10;)"在删除第二个分号后才起作用?

//Program 1
#include<stdio.h>

int main()
{
int i=1;
for(;i<=10;i++)
{
printf("%d\n",i);
}
}

//Program 2
#include<stdio.h>

int main()
{
int i;
//for(i=1;i<=10;) // This works but following doesn't
for(i=1;i<=10;;) 
{
printf("%d\n",i);
i++;
}
}
Run Code Online (Sandbox Code Playgroud)

c expression for-loop

-2
推荐指数
1
解决办法
6090
查看次数

为什么0 &&布尔值为0而不是布尔值?

为什么0 &&和布尔值计算为0而不是布尔值?

0 && false
> 0
0 && true
> 0

但是false && 0返回false而true && 0返回true

false && 0
> false

我认为数值和假表达式总是会返回一个布尔值.

1 && false
> false

javascript expression boolean boolean-expression

-2
推荐指数
1
解决办法
72
查看次数

借助宏或 typedef 的 C 中的有效表达式:(x) ((x) - 1)

(x) ((x) - 1)宏或 typedef 的帮助下,“表达式”能否成为有效的 C 表达式?

c macros expression

-2
推荐指数
1
解决办法
99
查看次数

-2
推荐指数
1
解决办法
94
查看次数