假设您需要有一个需要经常迭代的整数列表/数组,我的意思是非常频繁.原因可能有所不同,但它说它是高容量处理的最内循环的核心.
通常,由于其大小的灵活性,人们会选择使用列表(列表).最重要的是,msdn文档声称列表在内部使用数组,并且应该执行速度快(使用Reflector快速查看确认这一点).不用说,有一些开销.
有没有人真正测量过这个?通过列表迭代6M次与阵列相同的时间?
我做错了什么,或者以下代码真的不可能?
dynamic x = new ExpandoObject { Foo = 12, Bar = "twelve" };
Run Code Online (Sandbox Code Playgroud)
如果这确实不可能,是否有另一种单行方式来实例化具有两个属性的ExpandoObject?
为什么C#团队会选择禁止使用与常规对象,匿名对象和枚举/列表相同的初始化语法?
更新
我问过这个问题是因为我试图向珍珠爱好者展示C#的酷炫新动态特性,但后来由于无法做到我认为是一个逻辑实例化的东西而陷入困境ExpandoObject.感谢Hans Passant的回答,我意识到这ExpandoObject是错误的工具.我的真正目标是使用C#的动态功能从方法返回两个命名值.汉斯指出,dynamic关键字对此非常完美.我没有需要一个ExpandoObject完成它的所有开销.
因此,如果您想从方法中返回一对命名值,并且您不关心类型安全性,智能感知,重构或性能,这可以很好地工作:
public dynamic CreateFooBar()
{
return new { Foo = 42, Bar = "Hello" };
}
Run Code Online (Sandbox Code Playgroud)
用法:
dynamic fooBar = CreateFooBar();
var foo = fooBar.Foo;
var bar = fooBar.Bar;
Run Code Online (Sandbox Code Playgroud) 我正在学习 c#,我的主要语言现在是 php。我想知道如何(或是否)在 c# 中创建一个空数组。
在 php 中,您可以创建一个数组,然后向其中添加任意数量的条目。
$multiples=array();
$multiples[] = 1;
$multiples[] = 2;
$multiples[] = 3;
Run Code Online (Sandbox Code Playgroud)
在 C# 中,我在做类似的事情时遇到了麻烦:
int[] arraynums = new int[];
arraynums[] = 1;
arraynums[] = 2;
arraynums[] = 3;
Run Code Online (Sandbox Code Playgroud)
这给出了错误“数组创建必须具有数组大小或数组初始值设定项。” 如果我不知道要输入多少个条目,我该怎么做?有没有解决的办法?
我能够创建一个我创建的结构数组,但是我在为类的数组做同样的事情时遇到了麻烦.我(微弱地)意识到这可能不是最好的方法,但我很感激帮助弄清楚发生了什么.
我大约需要2天时间学习C#,而且我正在离开MS Office-VBA,如果这能让你知道我在做什么.无论如何,我正在关注一个在线参考,并一直试图玩到目前为止我学到的东西.这个问题是我演奏的结果.
首先,让我用一些代码片段描述我对struct所做的事情,以及该结构的数组.
我已经能够创建一个名为Machines 的结构 ...
// play with structs
struct Machines
{
// vars for struct
private string model, SN;
private int hours;
// assign values
public void AssignValues(string model_in, string SN_in, int hours_in)
{
model = model_in;
SN = SN_in;
hours = hours_in;
}
// display values
public void DisplayValues()
{
Console.WriteLine("Model: {0}", model);
Console.WriteLine("SN: {0}", SN);
Console.WriteLine("Hours: {0}", hours);
}
};
Run Code Online (Sandbox Code Playgroud)
......事情似乎工作得很好:
public static void Main()
{ …Run Code Online (Sandbox Code Playgroud) 就像PHP和其他一些语言一样,有没有办法在不指定索引的情况下向数组添加值?
int[] aWhich = {};
aWhich[] = 1;
Run Code Online (Sandbox Code Playgroud)
谢谢.
Random rand = new Random();
var list = new object[] { 1, 2, 3, "A", "B", "C" };
object item = list[rand.Next(0, list.Length)];
Run Code Online (Sandbox Code Playgroud)
我想返回项目然后从列表[]中删除它