Müşterilerimden biri bir uygulama çökmesi geçirdi ve bu hatayı/özniteliğini açıklayamadım.
WindowsIdentity.GetCurrent() Name.GetHashCode() bu dizgiyi döndürür: -? 2097695743
Evet, bu eksi, boşluk, soru işareti ve sonra gerçek karma numaraları.C# string.GetHashCode() int int sonuç döndürüyor
Bu, garip davranışı gösteren basit bir konsol uygulamasının kodudur.
static void Main(string[] args)
{
Console.WriteLine("From String: string name = WindowsIdentity.GetCurrent().Name");
string name = WindowsIdentity.GetCurrent().Name;
Console.WriteLine("name: " + name);
Console.WriteLine("name.GetHashCode().GetType(): " + name.GetHashCode().GetType());
Console.WriteLine("name.GetHashCode(): " + name.GetHashCode());
Console.WriteLine("name.GetHashCode().ToString(): " + name.GetHashCode().ToString());
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("Direct");
Console.WriteLine("WindowsIdentity.GetCurrent().Name: " + WindowsIdentity.GetCurrent().Name);
Console.WriteLine("WindowsIdentity.GetCurrent().Name.GetHashCode().GetType(): " + WindowsIdentity.GetCurrent().Name.GetHashCode().GetType());
Console.WriteLine("WindowsIdentity.GetCurrent().Name.GetHashCode(): " + WindowsIdentity.GetCurrent().Name.GetHashCode());
Console.WriteLine("WindowsIdentity.GetCurrent().Name.GetHashCode().ToString(): " + WindowsIdentity.GetCurrent().Name.GetHashCode().ToString());
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("Press Enter to continue");
Console.ReadLine();
}
Bu yazı çıktısı:
From String: string name = WindowsIdentity.GetCurrent().Name
name: COMMARC\tje
name.GetHashCode().GetType(): System.Int32
name.GetHashCode(): - ?2097695743
name.GetHashCode().ToString(): - ?2097695743
Direct
WindowsIdentity.GetCurrent().Name: COMMARC\tje
WindowsIdentity.GetCurrent().Name.GetHashCode().GetType(): System.Int32
WindowsIdentity.GetCurrent().Name.GetHashCode(): - ?2097695743
WindowsIdentity.GetCurrent().Name.GetHashCode().ToString(): - ?2097695743
Press Enter to continue
Ve bu aynı çıktı bir örneği verilmiştir:
Sorum şu: Bu nasıl olabiliyor yeryüzünde nedir?
GÜNCELLEME: sorun, negatif sayılar için korkak pencereler ayarlarındandı.
Değil. Terminalin bonker olduğunu sanıyorum. (Diğer bir olasılık, int.ToString() 'in yanlış olduğunu, ancak bundan şüpheliyim.) –
konsol uygulamasının çıktısını'> '(yani' yourApp.exe'> ') kullanarak bir dosyaya yazarsanız ne olur? out.txt') veya 'File.WriteAllText()' veya 'Debug.WriteLine()' gibi bir şey kullanın? – fardjad
Kültür çatışması olabilir. Name.GetHashCode(). ToString (CultureInfo.InvariantCulture) 'yazdırma nedir? –