Kodda, yalnızca en iyileştirmeler etkinleştirilmiş olarak oluşturulduğunda oluşturulan bir hatayla karşılaştım. Test için mantığı kopyalayan bir konsol uygulaması yaptım (aşağıdaki kod). Sen optimizasyon etkin olduğunda 'değer' Bu geçersiz mantık yürütme sonrasında boş olur görürsünüz:Yalnızca derleme optimizasyonu etkinleştirildiğinde hata oluşuyor
if ((value == null || value == new string[0]) == false)
düzeltme oldukça basittir ve kusurlu kod aşağıda belirtilmiş olan. Ama ... Ben daha çok ben assembler bir hata ile karşılaşmış olabilir veya belki de başkasının değer null değerine ayarlanmış bir açıklama vardır endişe duyuyorum.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace memory_testing
{
class Program
{
sta tic void Main(string[] args)
{
while(true)
{
Console.Write("Press any key to start...");
Console.ReadKey();
Console.WriteLine();
PrintManagerUser c = new PrintManagerUser();
c.MyProperty = new string[1];
}
}
}
public class PrintManager
{
public void Print(string key, object value)
{
Console.WriteLine("Key is: " + key);
Console.WriteLine("Value is: " + value);
}
}
public class PrintManagerUser
{
public string[] MyProperty
{
get { return new string[100]; }
set
{
Console.WriteLine("Pre-check Value is: " + value);
if ((value == null || value == new string[0]) == false)
{
Console.WriteLine("Post-check Value is: " + value);
new PrintManager().Print("blah", value);
}
//if (value != null && value.Length > 0)
//{
// new PrintManager().Print("blah", value);
//}
}
}
}
}
normal çıkış olmalıdır:
Pre-check Value is: System.String[]
Post-check Value is: System.String[]
Key is: blah
Value is: System.String[]
arabası çıktısı:
Pre-check Value is: System.String[]
Post-check Value is:
Key is: blah
Value is:
My Env bir VM çalıştıran Windows Server 2003 R2 .NET 3.5 SP1 ile . VS2008 Takım Sistemini Kullanma.
sayesinde
Brian
Açıkçası, optimize edici, '== false' kullanarak uygulamak yerine size kızgın! operatöre ifade. – iandisme
Ooh, bu * ilginç *. Reflektöre giriyor ... –
Haha –
bmancini