Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Meghatározza, hogy a közös nyelvi futtatókörnyezet alkalmazástartományonként számítja-e ki a sztringek kivonatkódjait.
<configuration>
<runtime>
<UseRandomizedStringHashAlgorithm>
Szemantika
<UseRandomizedStringHashAlgorithm
enabled=0|1 />
Attribútumok és elemek
A következő szakaszok az attribútumokat, a gyermekelemeket és a szülőelemeket ismertetik.
Attributes
| Attribute | Description |
|---|---|
enabled |
Kötelező attribútum. Meghatározza, hogy a sztringek kivonatkódjai alkalmazástartományonként legyenek-e kiszámítva. |
engedélyezett attribútum
| Érték | Description |
|---|---|
0 |
A közös nyelvi futtatókörnyezet nem számítja ki a sztringek kivonatkódjait alkalmazástartományonként; a sztringkivonatkódok kiszámításához egyetlen algoritmust használunk. Ez az alapértelmezett érték. |
1 |
A közös nyelvi futtatókörnyezet alkalmazástartományonként számítja ki a sztringek kivonatkódjait. A különböző alkalmazástartományokban és különböző folyamatokban lévő azonos sztringek különböző kivonatkódokkal rendelkeznek. |
Gyermekelemek
Nincs.
Szülőelemek
| Elem | Description |
|---|---|
configuration |
A közös nyelvi futtatókörnyezet és .NET-keretrendszer alkalmazások által használt összes konfigurációs fájl gyökéreleme. |
runtime |
Információkat tartalmaz a futtatókörnyezet inicializálási beállításairól. |
Megjegyzések
Az osztály és a StringComparer metódus alapértelmezés szerint String.GetHashCode egyetlen kivonatoló algoritmust használ, amely konzisztens kivonatkódot hoz létre az alkalmazástartományokban. Ez egyenértékű az elem enabledattribútumának beállításával.<UseRandomizedStringHashAlgorithm>0 Ez a .NET-keretrendszer 4-ben használt kivonatoló algoritmus.
Az StringComparer osztály és a String.GetHashCode metódus egy másik kivonatoló algoritmust is használhat, amely alkalmazástartományonként számítja ki a kivonatkódokat. Ennek eredményeként az egyenértékű sztringek kivonatkódjai eltérőek lesznek az alkalmazástartományokban. Ez egy bejelentkezési funkció; a kihasználása érdekében az enabled elem attribútumát <UseRandomizedStringHashAlgorithm> a következőre 1kell állítania: .
A kivonattáblák sztringkeresése általában O(1) művelet. Ha azonban nagy számú ütközés történik, a keresés O(n2) műveletté válhat. A konfigurációs elem használatával <UseRandomizedStringHashAlgorithm> alkalmazástartományonként véletlenszerű kivonatoló algoritmust hozhat létre, ami korlátozza a lehetséges ütközések számát, különösen akkor, ha a kivonatkódok kiszámításához használt kulcsok a felhasználók által bevitt adatokon alapulnak.
Example
Az alábbi példa egy DisplayString privát sztringállandót tartalmazó osztályt határoz meg, samelynek értéke "Ez egy sztring". Tartalmaz egy metódust ShowStringHashCode is, amely megjeleníti a sztring értékét és kivonatkódját, valamint annak az alkalmazástartománynak a nevét, amelyben a metódust végrehajtja.
using System;
public class Example
{
public static void Main()
{
// Show hash code in current domain.
DisplayString display = new DisplayString();
display.ShowStringHashCode();
// Create a new app domain and show string hash code.
AppDomain domain = AppDomain.CreateDomain("NewDomain");
var display2 = (DisplayString) domain.CreateInstanceAndUnwrap(typeof(Example).Assembly.FullName,
"DisplayString");
display2.ShowStringHashCode();
}
}
public class DisplayString : MarshalByRefObject
{
private String s = "This is a string.";
public override bool Equals(Object obj)
{
String s2 = obj as String;
if (s2 == null)
return false;
else
return s == s2;
}
public bool Equals(String str)
{
return s == str;
}
public override int GetHashCode()
{
return s.GetHashCode();
}
public override String ToString()
{
return s;
}
public void ShowStringHashCode()
{
Console.WriteLine($"String '{s}' in domain '{AppDomain.CurrentDomain.FriendlyName}': {s.GetHashCode():X8}");
}
}
Module Example
Public Sub Main()
' Show hash code in current domain.
Dim display As New DisplayString()
display.ShowStringHashCode()
' Create a new app domain and show string hash code.
Dim domain As AppDomain = AppDomain.CreateDomain("NewDomain")
Dim display2 = CType(domain.CreateInstanceAndUnwrap(GetType(Example).Assembly.FullName,
"DisplayString"), DisplayString)
display2.ShowStringHashCode()
End Sub
End Module
Public Class DisplayString : Inherits MarshalByRefObject
Private s As String = "This is a string."
Public Overrides Function Equals(obj As Object) As Boolean
Dim s2 As String = TryCast(obj, String)
If s2 Is Nothing Then
Return False
Else
Return s = s2
End If
End Function
Public Overloads Function Equals(str As String) As Boolean
Return s = str
End Function
Public Overrides Function GetHashCode() As Integer
Return s.GetHashCode()
End Function
Public Overrides Function ToString() As String
Return s
End Function
Public Sub ShowStringHashCode()
Console.WriteLine("String '{0}' in domain '{1}': {2:X8}",
s, AppDomain.CurrentDomain.FriendlyName,
s.GetHashCode())
End Sub
End Class
Ha konfigurációs fájl nélkül futtatja a példát, az a következőhöz hasonló kimenetet jelenít meg. Vegye figyelembe, hogy a sztring kivonatkódjai megegyeznek a két alkalmazástartományban.
String 'This is a string.' in domain 'PerDomain.exe': 941BCEAC
String 'This is a string.' in domain 'NewDomain': 941BCEAC
Ha azonban hozzáadja a következő konfigurációs fájlt a példa könyvtárához, majd futtatja a példát, az ugyanahhoz a sztringhez tartozó kivonatkódok alkalmazástartományonként eltérőek lesznek.
<?xml version ="1.0"?>
<configuration>
<runtime>
<UseRandomizedStringHashAlgorithm enabled="1" />
</runtime>
</configuration>
Ha a konfigurációs fájl jelen van, a példa a következő kimenetet jeleníti meg:
String 'This is a string.' in domain 'PerDomain.exe': 5435776D
String 'This is a string.' in domain 'NewDomain': 75CC8236