如果这是一个愚蠢的问题或者只是一个无聊的问题,我会向前道歉.此外,我将通过实际找到答案来证明这一点.我对复杂性不满意(因为这很无聊:))
题:
如何在C#2.0中以最简单最优的方式从枚举值数组创建位标志组合
示例代码(不确定这是我们在这里可以做的最好的):
enum MyEnum
{
    Apple = 0,
    Apricot = 1,
    Breadfruit = 2,
    Banana = 4
}
private int ConvertToBitFlags(MyEnum[] flags)
{
    string strFlags = string.Empty;
    foreach (MyEnum f in flags)
    {
        strFlags += strFlags == string.Empty ?
            Enum.GetName(typeof(MyEnum), f) :
            "," + Enum.GetName(typeof(MyEnum), f);
    }
    return (int)Enum.Parse(typeof(MyEnum), strFlags);
}
Run Code Online (Sandbox Code Playgroud) 以下枚举定义如下:
public enum Direction
{
    North,
    South,
    East,
    West,
    Northeast,
    Northwest,
    Southeast,
    Southwest,
    Undefined
}
Run Code Online (Sandbox Code Playgroud)
给定二维空间中的两组坐标,我想确定从第2点到第1点的相对基数方向.
例子:
我目前的方法涉及一系列条件,即
if (P1.X == P2.X)
{
    // either North, South or Undefined
    if (P1.Y < P2.Y)
        return Direction.South;
    else if (P1.Y > P2.Y)
        return Direction.North,
    else
        return Direction.Undefined;
}
else if (P1.Y == P2.Y)
{
    ...
}
else 
{
    ...
}
Run Code Online (Sandbox Code Playgroud)
我正在寻求更短,更优雅的解决方案.
对我来说,这是非常不可预测的代码结果。
没想到这段代码会产生这样的结果。
因此,我阅读了 Jeffrey Richter 的书(clr ia c#),并且有一个包含此代码的示例。
internal class ClassRoom
{
    private List<String> _students = new List<string>();
    public List<String> Students { get { return _students; } }
}
ClassRoom classRoom = new ClassRoom
{
    Students = {"Mike", "Johny", "Vlad", "Stas"}
};
foreach (var some in classRoom.Students)
{
    Console.WriteLine(some);
}
Run Code Online (Sandbox Code Playgroud)
而且,正如你们中的一些人所建议的,我们可以在控制台中看到四个名称。所以,我的问题是:
我们如何获得我们的名字,如果他们要分别在学生和 _students 中,由于不存在学生二传手而未分配。
__________编辑_1_______________
我阅读了您的回答,并感谢您的回答。
但是,你知道,这是一种误解……我真的想不通。
当我初始化学生时,我初始化_students?
还有什么不那么重要,当我从 IEnumerable( some ) 中获取变量时,我从Students 中获取变量?我想不是。
我不明白,我到底在哪里分配变量(初始化)_students集合?
谢谢你帮我弄清楚!
我有基于 ASP.Net MVC3 的 Web 应用程序。我需要一个“创建”视图,在用户从下拉列表中选择要创建的子类型之前,该视图不会知道模型类型。为了尝试解决此问题,我在 Shared/EditorTemplates 下为每个派生模型类型创建了一个编辑器模板。这允许我创建一个对视图模型强类型的“Create.cs”。视图模型只有两个成员,一个枚举和一个复杂类型。这个想法是,视图最初仅显示一个下拉列表(枚举成员的编辑器),然后当用户最初提交指定的“模型类型”(下拉选择的值)时,POST 操作可以检查“模型类型” " 为视图模型的单个复杂成员指定并实例化正确的派生模型类型,该成员的类型是所有可能的“模型类型”的基本类型。
抽象+派生类型模型对象...
public abstract class MyModelBase
{
    public MyModelType_e ModelType {get; set; }
    [Required]
    public string Name { get; set; }
}
public class DerivedType1 : MyModelBase
{ ... }
public class DerivedType2 : MyModelBase
{ ... }
public class DerivedType3 : MyModelBase
{ ... }
Run Code Online (Sandbox Code Playgroud)
我有一个复杂的视图模型如下......
public enum MyModelType_e
{
    DerivedType1 = 0,
    DerivedType2 = 1,
    DerivedType3 = 2
}
public class MyModelCreate
{
    public MyModelType_e ModelTypeForSelectList { get; …Run Code Online (Sandbox Code Playgroud)