如何在C#中创建自定义类型数组?
我创建了一个包含不同类型元素的对象数组:
public static int a; public static string b; public static ushort c; object[] myobj = new obj[]{ a, b, c};
如果我想创建一个包含此myobj类型数组元素的数组,我该怎么做?
我的意思是这样的:
myobj[] myarray = new myobj[]; <= but to do this, myobj should be a type.
不知道如何解决这个问题。
感谢大家。
我们如何使用Dictionary
来存储您需要的任何类型?
所以,虽然你不会完全拥有myType.a
,但你可以使用myType.Values["a"]
,它足够接近,使用标准的C#构造,并为你提供很多灵活性/可维护性
public class MyType { public MyType() { this.Values = new Dictionary
样本用法:
using System; using System.Collections.Generic; public static class Program { [STAThread] private static void Main() { var myTypes = new MyType[3]; myTypes[0] = new MyType(); myTypes[1] = new MyType(); myTypes[2] = new MyType(); for (var current = 0; current < myTypes.Length; ++current) { // here you customize what goes where myTypes[current].Values.Add("a", current); myTypes[current].Values.Add("b", "myBvalue"); myTypes[current].Values.Add("c", (ushort)current); } foreach (var current in myTypes) { Console.WriteLine( string.Format("A={0}, B={1}, C={2}", current.Values["a"], current.Values["b"], current.Values["c"])); } }
另外,如果需要,可以轻松地向类中添加indexer
属性,这样就可以使用myType["a"]
的语法访问元素。 请注意,添加或检索值时应添加错误检查。
public object this[object index] { get { return this.Values[index]; } set { this.Values[index] = value; } }
这是使用索引器的示例。 将条目增加“1”,以便我们看到ouptut的差异:
for (var current = 0; current < myTypes.Length; ++current) { myTypes[current]["a"] = current + 1; myTypes[current]["b"] = "myBvalue2"; myTypes[current]["c"] = (ushort)(current + 1); } foreach (var current in myTypes) { Console.WriteLine(string.Format("A={0}, B={1}, C={2}", current["a"], current["b"], current["c"])); }
创建一个包含所需类型的类型,并创建一个类型。
public class MyType // can be a struct. Depends on usage. { // should really use properties, I know, // and these should probably not be static public static int a; public static string b; public static ushort c; } // elsewhere MyType[] myobj = new MyType[]{};
不知道为什么你会想要通过object[]
跳过箍并且不得不在整个地方投掷。
我做了一些改变,但我认为这将是你想要做的精神。
由于属性是数组元素的唯一区别特征,因此“静态”没有任何意义,因此我删除了它。
如果您按如下方式定义类:
public class MyType { /// /// Need a constructor since we're using properties /// public MyType() { this.A = new int(); this.B = string.Empty; this.C = new ushort(); } public int A { get; set; } public string B { get; set; } public ushort C { get; set; } }
您可以像这样使用它:
上述就是C#学习教程:如何在C#中创建自定义类型数组?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!
using System; public static class Program { [STAThread] private static void Main() { var myType = new MyType[3]; myType[0] = new MyType(); myType[1] = new MyType(); myType[2] = new MyType(); for (var i = 0; i < myType.Length; ++i) { myType[i].A = 0; myType[i].B = "1"; myType[i].C = 2; } // alternatively, use foreach foreach (var item in myType) { item.A = 0; item.B = "1"; item.C = 2; } } }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1022455.html