相关疑难解决方法(0)

外变量陷阱

外部变量陷阱究竟是什么?感谢C#中的解释和示例.

编辑:纳入Jon Skeet的diktat :)

Eric Lippert关于外部变量陷阱

c# linq

46
推荐指数
2
解决办法
8324
查看次数

引用类型变量回收 - 如果在其中声明,则是在循环中的每个循环中创建的新引用变量?

以下是:

MyObject myVariable;
for(int i = 0; i < objects.Length, i++){
  myVariable = objects[i];
  // do stuff...
}
Run Code Online (Sandbox Code Playgroud)

效率更高:

for(int i = 0; i < objects.Length, i++){
  MyObject myVariable = objects[i];
  // do stuff...
}
Run Code Online (Sandbox Code Playgroud)

因为每次都不会创建一个用于保存引用的新变量?(或者编译器足够智能,只是为了使用相同的变量)..

(如果创建了一个新变量,它是否在堆上进行了malloced?)

c# oop

36
推荐指数
1
解决办法
8108
查看次数

在循环内部或外部声明变量是否更好?

最好做的是:

variable1Type foo; 
variable2Type baa; 

foreach(var val in list) 
{
    foo = new Foo( ... ); 
    foo.x = FormatValue(val); 

    baa = new Baa(); 
    baa.main = foo; 
    baa.Do();
}
Run Code Online (Sandbox Code Playgroud)

要么:

foreach(var val in list) 
{
    variable1Type foo = new Foo( ... ); 
    foo.x = FormatValue(val); 

    variable2Type baa = new Baa(); 
    baa.main = foo; 
    baa.Do();
}
Run Code Online (Sandbox Code Playgroud)

问题是:什么是更快的1例或2例?区别是微不足道的吗?它在实际应用中是否相同?这可能是一个优化微观,但我真的想知道哪个更好.

.net c# scope

31
推荐指数
1
解决办法
1万
查看次数

ASP.NET MVC - 从查询字符串中获取对象列表

我传递了一个参数列表。如“名称”、“ID”、“类型”。url 中会有很多这样的内容,如下所示:

"Name=blah1,Id=231,Type=blah1;Name=blah2,Id=2221,Type=blah1;Name=blah3,Id=45411,Type=blah3;"
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法将这些查询参数映射到对象列表。所以,我可以创建一个对象:

MyTestObject {Name;Id;Type} 并且可以在我的控制器中说

Index(IList<MyTestObject> params)
Run Code Online (Sandbox Code Playgroud)

params 将填充来自查询字符串的数据。

类似于http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx 的东西

asp.net-mvc asp.net-mvc-routing

5
推荐指数
2
解决办法
2万
查看次数

可变范围和性能

以下是我正在使用的代码

private void TestFunction()
{
  foreach (MySampleClass c in dictSampleClass)
  {
    String sText = c.VAR1 + c.VAR2 + c.VAR3
    PerformSomeTask(sText,c.VAR4);
  }
}
Run Code Online (Sandbox Code Playgroud)

我的朋友已经建议改为(以提高性能.dictSampleClass是一个字典.它有10K对象)

private void TestFunction()
{
  String sText="";
  foreach (MySampleClass c in dictSampleClass)
  {
    sText = c.VAR1 + c.VAR2 + c.VAR3
    PerformSomeTask(sText,c.VAR4);
  }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,"上述变化会改善绩效吗?如果是,怎么样?"

哇,这比预期的反应更多.大多数人都说"C#编译器可以解决这个问题".那么c编译器呢?

c#

1
推荐指数
1
解决办法
312
查看次数

何时在C#中声明有关效率/速度的变量

我正在运行一些完全为效率而构建的实现.我对这个主题还不是很有经验,并且想知道何时最好地声明变量.我的代码的以下部分特别是:

//Variables not declared in the next part are declared here (like xx, y1, x1.....)
    for(s = 0; s < this.Width; s++)
        {
            y = ymin;
            for(z = 0; z < this.Height; z++)
            {
                x1 = 0;
                y1 = 0;
                looper = 0;
                while(looper < curMaxIter && Math.Sqrt((x1 * x1) + (y1 * y1)) < 2)
                {
                    looper++;
                    xx = (x1 * x1) - (y1 * y1) + x;
                    y1 = 2 * x1 * y1 + y;
                    x1 = …
Run Code Online (Sandbox Code Playgroud)

c# variables performance declaration cpu-speed

-2
推荐指数
1
解决办法
91
查看次数