根据另一个变量为变量赋值

时间:2015-10-30 18:39:20

标签: c# assign

我有一个快速的问题来分配值 在我的新程序中,我试图根据整数的值为booleans赋值。这是我的意思的一个简单例子:

bool northDoorAvailable;
int roomLocation;

// set player Location in some code
roomLocation = 2;

// now set if the north door is available

这是否仅适用于我写了很多if - 语句?

的函数
public void checkDoors() 
{
    if ( roomLocation == 1 )
    {
        northDoorAvailable = false;
    }
    if ( roomLocation == 2 )
    {
        northDoorAvailable = true;
    }
}

或者这个过程可以自动化吗?

很高兴收到回复。

3 个答案:

答案 0 :(得分:2)

更好的语法在很大程度上取决于所有可能的条件。现在你可以使用

 northDoorAvailable = (roomLocation == 2);

 northDoorAvailable = (roomLocation != 1);

因为X == Y会返回truefalse,具体取决于两者是否相等"。 (反之亦然!=

但如果roomLocation3怎么办? 4

通常, usally 可以将这些条件简化为单个逻辑表达式,但可能总是。一种简化方法是将所有可能的条件放在"truth table"中,并查看等效逻辑表达式是什么。

  

如果roomlocation != possibleLocations northDoorAvailable = false

,则会有其他人

我假设possibleLocations集合(如果是整数),如果包含 roomlocation,那么northDoorAvailable将是true。在这种情况下,您可以使用

northDoorAvailable = (possibleLocations.Contains(roomlocation));

答案 1 :(得分:0)

您可以使用字典:

public class MyGameClass
{
    private Dictionary<int, bool> _northDoorAvailable = new Dictionary<int, bool>();

    public MyGameClass()
    {
        _northDoorAvailable[1] = false;
        _northDoorAvailalbe[2] = true;
        _northDoorAvailable[3] = false;
        _northDoorAvailable[4] = false;
        _northDoorAvailable[5] = false;
    }

    public bool IsNorthDoorAvailable(int room)
    {
        bool available = false;
        _northDoorAvailable.TryGetValue(room, out available);
        return available;
    }
}

字典是键/值存储,在这种情况下,键是房间号,值((标记的另一侧)是门是否可用。您可以在构造函数方法中为您正在使用的任何类快速添加案例到字典,并且可以在内部或通过IsNorthDoorAvailable方法公开访问字典。

答案 2 :(得分:0)

你可以做的是有一个排序列表并解析一个单词doc或db table,其中包含一个房间列表及其相应的布尔值,然后循环遍历列表

1 - 真实

2 - 真实

3 - 假

等...

SortedList<int, bool> roomsList = new SortedList<int, bool>();

using (StreamReader reader = new StreamReader(@"C:\temp\RoomList.txt"))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                string[] rooms = line.Split('-');
                roomsList.Add(int.Parse(rooms[0]), bool.Parse(rooms[1]));
            }
        }