कुछ कोर प्रकार (DateTime
- विशेष रूप से ध्यान देने योग्य बात "प्रकार", या Decimal
पैमाने टिप्पण) मानों रिपोर्ट के रूप में बराबर हो सकता है, लेकिन जो अलग ढंग से क्रमानुसार; उदाहरण के लिए:
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
class Foo
{
public decimal Bar { get; set; }
static void Main()
{
Foo foo = new Foo();
foo.Bar = 123.45M;
var s = Serialize(foo);
Foo foo2 = new Foo();
foo2.Bar = 123.4500M;
bool areSame = foo.Bar == foo2.Bar; // true
var s2 = Serialize(foo2);
bool areSerializedTheSame = s == s2; // false
}
static string Serialize(object obj)
{
using (var ms = new MemoryStream())
{
new BinaryFormatter().Serialize(ms, obj);
return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
}
}
}
सटीक एक ही वस्तु को अलग ढंग से क्रमानुसार कर सकता था कि करने के लिए के रूप में - अच्छी तरह से, कि नहीं आम तौर पर एक गारंटी नहीं है कि क्रमांकन के बारे में कोई दावा करता है है। सीरियलाइजेशन आपके डेटा/ऑब्जेक्ट्स को संग्रहीत करने और पुनर्प्राप्त करने के बारे में है - समानता साबित करने के बारे में नहीं। उदाहरण के लिए, एक्सएमएल में सभी प्रकार के व्हाइटस्पेस और नेमस्पेस सामान्यीकरण मुद्दे हैं जो तुलना के लिए अनुपयुक्त बनाते हैं। BinaryFormatter
और अन्य बाइनरी धारावाहिक अधिक आकर्षक लगते हैं, लेकिन मुझे यकीन नहीं है कि वे उस व्यवहार की गारंटी देते हैं जिसे आप ढूंढ रहे हैं।
मैं वास्तव में ऐसे दृष्टिकोण के माध्यम से तुलना की तुलना में विश्वास नहीं करता जब तक कि धारावाहिक स्पष्ट रूप से ने यह गारंटी नहीं दी।
स्रोत
2011-10-31 13:31:40
ठीक है, ऐसा लगता है कि मैं यह साबित करना है:
ठीक है, यहाँ सबूत कोड है। ** मैं नमूना ऐप बनाने की कोशिश करूंगा। ** – Aliostad
मुझे विश्वास नहीं है कि यह मामला है। धारा के उदाहरण अलग हो सकते हैं, लेकिन सामग्री एक जैसी होनी चाहिए। यह मानते हुए कि उनके राज्य क्रमिकरण के दौरान संशोधित नहीं है। – Ian
@Ian इसे बनाने के लिए मेरा नमूना कोड देखें। – Aliostad