2016-09-09 51 views
6

değiştirin. kaynak koda .NET ben mscorlib.dll içinde olan</p> <pre><code>public String Replace(String oldValue, String newValue); </code></pre> <p>yöntemi (System.String) nasıl çalıştığını görmek istediğiniz yöntemi (v4.6.1)

Ben dotPeek ile mscorlib.dll Decompiled ve yöntemi içinde ben

string s = ReplaceInternal(oldValue, newValue); 

Hatta açık kaynak .NET Çekirdek itibaren bu yöntem aramak zorunda bulamıyorum ReplaceInternal yöntemi çağrısı var GIT ama şans yok. ve içinde ne bu yöntemdir nerede

View my Decompiled code

açıklayınız?

+0

[ 'ReplaceInternal'] (http://referencesource.microsoft.com/#mscorlib/system/string.cs,35ab9efe11757286) ist 'extern', büyük olasılıkla "yönetilmeyen", yerli C++ kodu olarak uygulanmaktadır. Detaylar için bakınız [P/Invoke] (https://en.wikipedia.org/wiki/Platform_Invocation_Services). –

+2

btw kaynak koduna ihtiyacınız yok, kaynağı görebiliyorsunuz @ http://referencesource.microsoft.com/#mscorlib/system/string.cs,69fc1d0aa6df8a90 – Bob

cevap

4

bir göz here olması, bu fark edeceksiniz: Bu yöntem başka dll, dışarıdan uygulandığını

// This method contains the same functionality as StringBuilder Replace. 
// The only difference is that 
// a new String has to be allocated since Strings are immutable 
[System.Security.SecuritySafeCritical] // auto-generated 
[ResourceExposure(ResourceScope.None)] 
[MethodImplAttribute(MethodImplOptions.InternalCall)] 
private extern String ReplaceInternal(String oldValue, String newValue); 

extern anahtar kelime means. Bu modül tarafından kullanılan, yönetilmeyen bir dll'de (C++'da muhtemelen) yazılabilir. Yani, genellikle kodla yaptığınız gibi bu kodu koda dönüştüremez veya göremezsiniz. Güncelleme

biraz arama yaptıktan sonra ben CoreCLR projesinde gelen kodu bulundu:

https://github.com/dotnet/coreclr/blob/master/src/classlibnative/bcltype/stringnative.cpp

+0

Çok teşekkür ederim, ama "another.dll" nerede? İçeride görmek istiyorum .. ya da onun adı ne? –