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)
我建议使用上一个版本.
有时谷歌是你最好的朋友:
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)