你能根据另一个 class 的 bool 输出创建一个列表吗?
Can you create a list based on the output of bools from another class?
编辑(希望清晰):
我想做的(不确定是否可以完成)的顺序是:
- 确定变量 are/are 是否不存在(例如,“你有鼠标吗?你有键盘吗?你有扬声器吗?等)
- 使用 #1 的输出,创建一个包含 are/are not 语句输出的列表(例如,你有鼠标吗?是吗?好的,将鼠标添加到列表中。你有鼠标吗?键盘?没有?好的,从与鼠标相同的列表中省略键盘,不要将其添加到另一个列表。你有扬声器吗?是?将扬声器添加到与鼠标所在的相同列表中。
- 稍后可以参考此列表。
如果下面的代码让您感到困惑,请不要看它,而是查看#1-3。
Edit2:这是针对带有 Target Framework .NET Framework 4.7.2 的 C#,输出类型 Class Library(.dll),以防更改代码的编写方式。
public class AreFooPresent
{
public static bool foo0 = false
public static bool foo1 = false
public static bool foo2 = false
}
public class AreTheyThereList
{
List<FooList> myList = new List<FooList>
{
myList.Add(new FooList(if return foo0 != false));
myList.Add(new FooList(if return foo1 != false));
myList.Add(new FooList(if return foo2 != false));
}
}
欢迎来到 SO!像下面的代码这样简单的东西就可以完成这项工作。它只会添加到列表中,如果它是真实的并且因为它们是静态成员,您可以引用 class 然后是静态成员。
然后在最后,它将 return 正布尔列表(如果有)- 如果没有,它将是一个空列表。
public class AreFooPresent
{
public static bool foo0 = false
public static bool foo1 = false
public static bool foo2 = false
}
public class AreTheyThereList
{
public List<bool> MyPositiveFooCollectionMethod()
{
List<bool>myList = new List<FooList>();
if (AreFooPresent.foo0) myList.Add(AreFooPresent.foo0);
if (AreFooPresent.foo1) myList.Add(AreFooPresent.foo1);
if (AreFooPresent.foo2) myList.Add(AreFooPresent.foo2);
return myList;
}
}
另一个使用 linq
using System.Linq;
...
var list = (new bool[] {AreFooPresent.foo0, AreFooPresent.foo1, AreFooPresent.foo2})
.Where(b => b).ToList();
我看到你正在初始化一些对象 FooList
,在本例中是
using System.Linq;
...
var list = (new bool[] {AreFooPresent.foo0, AreFooPresent.foo1, AreFooPresent.foo2})
.Where(b => b)
.Select(b => new FooList(b)).ToList();
编辑(希望清晰):
我想做的(不确定是否可以完成)的顺序是:
- 确定变量 are/are 是否不存在(例如,“你有鼠标吗?你有键盘吗?你有扬声器吗?等)
- 使用 #1 的输出,创建一个包含 are/are not 语句输出的列表(例如,你有鼠标吗?是吗?好的,将鼠标添加到列表中。你有鼠标吗?键盘?没有?好的,从与鼠标相同的列表中省略键盘,不要将其添加到另一个列表。你有扬声器吗?是?将扬声器添加到与鼠标所在的相同列表中。
- 稍后可以参考此列表。
如果下面的代码让您感到困惑,请不要看它,而是查看#1-3。
Edit2:这是针对带有 Target Framework .NET Framework 4.7.2 的 C#,输出类型 Class Library(.dll),以防更改代码的编写方式。
public class AreFooPresent
{
public static bool foo0 = false
public static bool foo1 = false
public static bool foo2 = false
}
public class AreTheyThereList
{
List<FooList> myList = new List<FooList>
{
myList.Add(new FooList(if return foo0 != false));
myList.Add(new FooList(if return foo1 != false));
myList.Add(new FooList(if return foo2 != false));
}
}
欢迎来到 SO!像下面的代码这样简单的东西就可以完成这项工作。它只会添加到列表中,如果它是真实的并且因为它们是静态成员,您可以引用 class 然后是静态成员。
然后在最后,它将 return 正布尔列表(如果有)- 如果没有,它将是一个空列表。
public class AreFooPresent
{
public static bool foo0 = false
public static bool foo1 = false
public static bool foo2 = false
}
public class AreTheyThereList
{
public List<bool> MyPositiveFooCollectionMethod()
{
List<bool>myList = new List<FooList>();
if (AreFooPresent.foo0) myList.Add(AreFooPresent.foo0);
if (AreFooPresent.foo1) myList.Add(AreFooPresent.foo1);
if (AreFooPresent.foo2) myList.Add(AreFooPresent.foo2);
return myList;
}
}
另一个使用 linq
using System.Linq;
...
var list = (new bool[] {AreFooPresent.foo0, AreFooPresent.foo1, AreFooPresent.foo2})
.Where(b => b).ToList();
我看到你正在初始化一些对象 FooList
,在本例中是
using System.Linq;
...
var list = (new bool[] {AreFooPresent.foo0, AreFooPresent.foo1, AreFooPresent.foo2})
.Where(b => b)
.Select(b => new FooList(b)).ToList();