【问题标题】:How to access an object using a methods parameter?如何使用方法参数访问对象?
【发布时间】:2014-01-23 01:24:30
【问题描述】:

这里的菜鸟问题,我想知道如何使用传递给方法的参数来访问对象。我已经尝试过了,但遇到了一个标识符预期的错误。

private Boolean checkStates(string button)
{
    if (lastState.Buttons.(button) = padState.Buttons.(button))
    {
        return true;
    }
    else{
        return false;
    }
}

这是我正在尝试做的 javascript 等价物。

var object = {'property':'A'};

function getPropVal(prop){
    return object[prop];
}

getPropVal(property);
//output: 'A'

【问题讨论】:

  • 在您的伪 C# 示例中,您能否详细说明您要完成的工作?我想我明白你想要什么,但我不确定。 (同样在你的 if 语句中,你需要使用 == 而不是 = 来测试是否相等)
  • 我正在尝试使用传递给方法的值访问 lastState.Buttons,例如如果传递了 A 我想访问 lastState.Buttons.A
  • 什么是lastState.Buttons?...集合?如果是的话是什么类型的?
  • 在这种情况下A 不是object,它是propertyfield。您没有给我们足够的信息,它是静态字段还是属性?什么是Buttons,一个对象或某种列表或容器?我认为你的 javascript 伪代码与这个问题无关。如果是这样,你可以用字典来做

标签: c#


【解决方案1】:

如果两个Buttons 都是标识符的“按钮”字典,那么您可以这样做:

   if (lastState.Buttons[button] == padState.Buttons[button])

还要注意==(假设您要比较,而不是赋值,因为它是if 语句)。

如果是集合,你可以使用 LINQ FirstOrDefault:

   var button1 = lastState.Buttons.FirstOrDefault(b => b.SomeProperty == button);
   var button2 = lastState.Buttons.FirstOrDefault(b => b.SomeProperty == button);
   if (button1 != null && button1 == button2)...

请注意,在这两种情况下,if 都会比较对象,如果您想通过特定属性检查相等性 - 相应地更改条件。

【讨论】:

    猜你喜欢
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多