如何用C#创建一个带有属性的简单Object,就像使用javascript一样

sga*_*dev 12 .net javascript c# collections object

我正在使用Xamarin,我需要看起来像这样的东西:

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

所以我以后可以这样做:

myObject.Colors.Blue // returns a Xamarin.Color object
Run Code Online (Sandbox Code Playgroud)

但是,当然,这不编译.显然,我需要为此创建一个完整的新类,我真的不想做,也不认为我应该这样做.在javascript中,我可以做这样的事情:

this.colors = { blue: Xamarin.Color.FromHex("..."), red: Xamarin... }
Run Code Online (Sandbox Code Playgroud)

C尖锐的东西可以帮我快速实现吗?谢谢

mus*_*ium 16

你可以创建一个动态对象(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这样的无类型语言.因此,创建一个新类是在C#中执行此操作的方法.

使用动态对象的示例:

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

或者使用ExpandoObject:

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

或者更多C#OO这样做的方式...... 创建一个类:

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; }
}
Run Code Online (Sandbox Code Playgroud)

我建议使用上一个版本.


YoY*_*nnY 8

有时谷歌是你最好的朋友:

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

var Colors = new {
    Blue = Xamaring.Color.FromHex("FFFFFF"),
    Red = Xamarin.Color.FromHex("F0F0F0")
}
Run Code Online (Sandbox Code Playgroud)

  • 它有效......蓝色只是类型从右侧给出的属性的名称。尝试: var colors = new { Blue = ConsoleColor.White, Red = ConsoleColor.Red }; (3认同)