Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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#_Assign - Fatal编程技术网

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

C# 根据另一个变量为变量赋值,c#,assign,C#,Assign,我有一个关于赋值的快速问题。 在我的新程序中,我试图根据整数的值为布尔赋值。下面是我的意思的一个简单例子: bool northDoorAvailable; int roomLocation; // set player Location in some code roomLocation = 2; // now set if the north door is available 这是否只有在我编写了大量if-语句的函数中才可能实现 public void checkDoors() {

我有一个关于赋值的快速问题。
在我的新程序中,我试图根据整数的值为布尔赋值。下面是我的意思的一个简单例子:

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;
    }
}
或者这个过程可以自动化吗


很高兴收到回复。

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

 northDoorAvailable = (roomLocation == 2);

因为
X==Y
返回
true
false
,这取决于两者是否“相等”。(反之亦然,
!=

但是如果
roomLocation
3
<代码>4

一般来说,通常可以将这些条件简化为单个逻辑表达式,但情况并非总是如此。简化的一种方法是将所有可能的条件放在一个表中,然后看看等价的逻辑表达式是什么

如果
roomlocation!=可能的位置
可以
northDoorAvailable=false

我假设
possibleLocations
是一个整数集合,如果它包含
roomlocation
,那么
Northdoor Available
将是
true
。那样的话,你可以用

northDoorAvailable = (possibleLocations.Contains(roomlocation));

您可以使用字典来完成以下操作:

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;
    }
}
公共类MyGameClass
{
专用词典_northDoorAvailable=新词典();
公共MyGameClass()
{
_Northdoor Available[1]=错误;
_Northdoor Availalbe[2]=真;
_Northdoor Available[3]=错误;
_Northdoor Available[4]=错误;
_Northdoor Available[5]=错误;
}
可使用公共厕所(室内)
{
bool available=false;
_Northdoor可用。TryGetValue(房间,室外可用);
返回可用;
}
}

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

您可以创建一个已排序的列表,并使用房间列表及其相应的布尔值解析word文档或db表,然后在列表中循环

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]));
            }
        }
SortedList roomsList=新的SortedList();
使用(StreamReader=newstreamreader(@“C:\temp\RoomList.txt”))
{
弦线;
而((line=reader.ReadLine())!=null)
{
string[]rooms=line.Split('-');
添加(int.Parse(rooms[0])、bool.Parse(rooms[1]);
}
}

您可以使用多种不同的方法,从将值存储在字典中到将其简化为一行:
northDoorAvailable=roomLocation!=1;例如。这是仅有的两种可能的情况吗?如果
roomlocation==3
?@RonBeyer在代码中我该怎么做?对不起,显然,与你相比,我对编码相当陌生:)@DStanley不,如果
roomlocation!=可能的位置
它可以
northDoorAvailable=false
@IanH。正如我向您展示的(这是一行有效的代码)。您可以将整个
检查门
功能替换为该功能,但前提是
Northdoor Available
仅在房间位置不等于1时才为真。如果您有其他要求,那么最好使用字典。我会键入一个答案,告诉你如何使用它。@D Stanley啊,现在我明白了。最后一个问题:当另一个代码正在运行时,是否可以在后台执行此操作,这样就不必反复调用它?与您的意思不同,但您可以将其设置为属性,并在“获取”属性时进行计算。对属性、getter和setter进行一些研究,如果遇到困难,可以问另一个特定的问题。这是非常基本的C#东西,所以你可以自己找到答案。
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]));
            }
        }