[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-07 UTC."],[[["\u003cp\u003eThe \u003ccode\u003eBlob\u003c/code\u003e struct in the Firestore API represents an immutable sequence of bytes, acting as a wrapper around a Protobuf \u003ccode\u003eByteString\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eThis struct provides access to the underlying \u003ccode\u003eByteString\u003c/code\u003e, as well as indexed byte access via the \u003ccode\u003ethis[int]\u003c/code\u003e property, and a read-only \u003ccode\u003eLength\u003c/code\u003e property indicating its byte size.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eBlob\u003c/code\u003e struct includes methods for creating new instances, such as \u003ccode\u003eCopyFrom(byte[])\u003c/code\u003e and \u003ccode\u003eFromByteString(ByteString)\u003c/code\u003e, enabling the construction of blobs from byte arrays or existing \u003ccode\u003eByteString\u003c/code\u003e instances.\u003c/p\u003e\n"],["\u003cp\u003eStatic operator overloads \u003ccode\u003e==\u003c/code\u003e and \u003ccode\u003e!=\u003c/code\u003e are provided to allow for comparison of two \u003ccode\u003eBlob\u003c/code\u003e values to determine if they are equal or not.\u003c/p\u003e\n"],["\u003cp\u003eThe documentation site references various versions of the \u003ccode\u003eGoogle.Cloud.Firestore.Blob\u003c/code\u003e struct, ranging from version 2.3.1 to the latest 3.10.0.\u003c/p\u003e\n"]]],[],null,["# Firestore API - Struct Blob (3.10.0)\n\nVersion latestkeyboard_arrow_down\n\n- [3.10.0 (latest)](/dotnet/docs/reference/Google.Cloud.Firestore/latest/Google.Cloud.Firestore.Blob)\n- [3.9.0](/dotnet/docs/reference/Google.Cloud.Firestore/3.9.0/Google.Cloud.Firestore.Blob)\n- [3.8.0](/dotnet/docs/reference/Google.Cloud.Firestore/3.8.0/Google.Cloud.Firestore.Blob)\n- [3.7.0](/dotnet/docs/reference/Google.Cloud.Firestore/3.7.0/Google.Cloud.Firestore.Blob)\n- [3.6.0](/dotnet/docs/reference/Google.Cloud.Firestore/3.6.0/Google.Cloud.Firestore.Blob)\n- [3.5.1](/dotnet/docs/reference/Google.Cloud.Firestore/3.5.1/Google.Cloud.Firestore.Blob)\n- [3.4.0](/dotnet/docs/reference/Google.Cloud.Firestore/3.4.0/Google.Cloud.Firestore.Blob)\n- [3.3.0](/dotnet/docs/reference/Google.Cloud.Firestore/3.3.0/Google.Cloud.Firestore.Blob)\n- [3.2.0](/dotnet/docs/reference/Google.Cloud.Firestore/3.2.0/Google.Cloud.Firestore.Blob)\n- [3.1.0](/dotnet/docs/reference/Google.Cloud.Firestore/3.1.0/Google.Cloud.Firestore.Blob)\n- [3.0.0](/dotnet/docs/reference/Google.Cloud.Firestore/3.0.0/Google.Cloud.Firestore.Blob)\n- [2.5.0](/dotnet/docs/reference/Google.Cloud.Firestore/2.5.0/Google.Cloud.Firestore.Blob)\n- [2.4.0](/dotnet/docs/reference/Google.Cloud.Firestore/2.4.0/Google.Cloud.Firestore.Blob)\n- [2.3.1](/dotnet/docs/reference/Google.Cloud.Firestore/2.3.1/Google.Cloud.Firestore.Blob) \n\n public struct Blob : IEquatable\u003cBlob\u003e\n\nReference documentation and code samples for the Firestore API struct Blob.\n\nAn immutable sequence of bytes. \n\nImplements\n----------\n\n[IEquatable](https://learn.microsoft.com/dotnet/api/system.iequatable-1)[Blob](/dotnet/docs/reference/Google.Cloud.Firestore/latest/Google.Cloud.Firestore.Blob) \n\nInherited Members\n-----------------\n\n[object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype)\n\nNamespace\n---------\n\n[Google.Cloud.Firestore](/dotnet/docs/reference/Google.Cloud.Firestore/latest/Google.Cloud.Firestore)\n\nAssembly\n--------\n\nGoogle.Cloud.Firestore.dll\n\nRemarks\n-------\n\nAlthough this is a struct, it's effectively just a wrapper around a Protobuf ByteString.\n`default(Blob)` acts as if it had been constructed with [Empty](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.ByteString.html#Google_Protobuf_ByteString_Empty).\n\nProperties\n----------\n\n### ByteString\n\n public ByteString ByteString { get; }\n\nThe underlying Protobuf ByteString.\n\n### this\\[int\\]\n\n public byte this[int index] { get; }\n\nReturns the byte at index `index`.\n\n### Length\n\n public int Length { get; }\n\nThe length of the blob, in bytes.\n\nMethods\n-------\n\n### CopyFrom(byte\\[\\])\n\n public static Blob CopyFrom(byte[] bytes)\n\nConstructs a new [Blob](/dotnet/docs/reference/Google.Cloud.Firestore/latest/Google.Cloud.Firestore.Blob) by copying the current content of `bytes`.\n\n### FromByteString(ByteString)\n\n public static Blob FromByteString(ByteString byteString)\n\nConstructs a new [Blob](/dotnet/docs/reference/Google.Cloud.Firestore/latest/Google.Cloud.Firestore.Blob) wrapping the given [ByteString](/dotnet/docs/reference/Google.Cloud.Firestore/latest/Google.Cloud.Firestore.Blob#Google_Cloud_Firestore_Blob_ByteString).\n\n### GetHashCode()\n\n public override int GetHashCode()\n\n**Overrides** \n[ValueType.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.valuetype.gethashcode)\n\n### ToString()\n\n public override string ToString()\n\n**Overrides** \n[ValueType.ToString()](https://learn.microsoft.com/dotnet/api/system.valuetype.tostring)\n\nOperators\n---------\n\n### operator ==(Blob, Blob)\n\n public static bool operator ==(Blob lhs, Blob rhs)\n\nOperator overload to compare two Blob values for equality.\n\n### operator !=(Blob, Blob)\n\n public static bool operator !=(Blob lhs, Blob rhs)\n\nOperator overload to compare two Blob values for inequality."]]