如何在 C# 中创建具有属性的简单对象,例如 javascript

How to create a simple Object with properties in C# like with javascript

我正在使用 Xamarin,我需要这样的东西:

public Colors = new object() {
  Blue = Xamaring.Color.FromHex("FFFFFF"),
  Red = Xamarin.Color.FromHex("F0F0F0")
}

所以我以后可以做这样的事情:

myObject.Colors.Blue // returns a Xamarin.Color object

当然,这不会编译。显然,我需要为此创建一个全新的 class,这是我真的不想做,也不认为我应该做的事情。在 javascript 中,我可以用以下方法做这样的事情:

this.colors = { blue: Xamarin.Color.FromHex("..."), red: Xamarin... }

有没有升C的东西可以帮我快速实现这个?谢谢

有时候Google是你最好的朋友:

https://msdn.microsoft.com/en-us/library/bb397696.aspx

var Colors = new {
    Blue = Xamaring.Color.FromHex("FFFFFF"),
    Red = Xamarin.Color.FromHex("F0F0F0")
}

您可以创建动态对象 (https://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject%28v=vs.110%29.aspx, https://msdn.microsoft.com/en-us/library/bb397696.aspx)。但是 C# 是一种强类型语言……而不是像 javascript 这样的非类型语言。因此,创建一个新的 class 是在 C# 中执行此操作的方法。

使用动态对象的示例:

public class Program
{
    static void Main(string[] args)
    {
        var colors = new { Yellow = ConsoleColor.Yellow, Red = ConsoleColor.Red };
        Console.WriteLine(colors.Red);
    }
}

或使用 ExpandoObject:

public class Program
{
    static void Main(string[] args)
    { 
        dynamic colors = new ExpandoObject();
        colors.Red = ConsoleColor.Red;
        Console.WriteLine(colors.Red);
    }
}

或者更多的 C# OO 方法……。创建一个 class:

public class Program
{
    static void Main(string[] args)
    { 
        var colors = new List<Color>
        {
            new Color{ Color = ConsoleColor.Black, Name = "Black"},
            new Color{ Color = ConsoleColor.Red, Name = "Red"},
        }; 
        Console.WriteLine(colors[0].Color);
    }
}

public class Color
{
    public ConsoleColor Color { get; set; }
    public String Name { get; set; }
}

我建议使用最新版本。