public sealed class Distribution.Types.BucketOptions.Types.Explicit : IMessage<Distribution.Types.BucketOptions.Types.Explicit>, IEquatable<Distribution.Types.BucketOptions.Types.Explicit>, IDeepCloneable<Distribution.Types.BucketOptions.Types.Explicit>, IBufferMessage, IMessage
Specifies a set of buckets with arbitrary widths.
There are size(bounds) + 1 (= N) buckets. Bucket i has the following
boundaries:
Upper bound (0 <= i < N-1): bounds[i]
Lower bound (1 <= i < N); bounds[i - 1]
The bounds field must contain at least one element. If bounds has
only one element, then there are no finite buckets, and that single
element is the common boundary of the overflow and underflow buckets.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[[["\u003cp\u003eThis document provides detailed information about the \u003ccode\u003eDistribution.Types.BucketOptions.Types.Explicit\u003c/code\u003e class within the Google.Api.CommonProtos library, including its latest version (2.15.0) and prior ones.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eExplicit\u003c/code\u003e class is used to define a set of buckets with varying widths for data distributions, where the number of buckets is determined by the \u003ccode\u003esize(bounds) + 1\u003c/code\u003e formula, and bounds represent the boundary values between buckets.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eExplicit\u003c/code\u003e implements multiple interfaces such as \u003ccode\u003eIMessage\u003c/code\u003e, \u003ccode\u003eIEquatable\u003c/code\u003e, \u003ccode\u003eIDeepCloneable\u003c/code\u003e, and \u003ccode\u003eIBufferMessage\u003c/code\u003e, allowing for message-based operations, equality checks, deep cloning, and efficient data management, respectively.\u003c/p\u003e\n"],["\u003cp\u003eThe class offers methods like \u003ccode\u003eClone()\u003c/code\u003e, \u003ccode\u003eEquals()\u003c/code\u003e, \u003ccode\u003eGetHashCode()\u003c/code\u003e, \u003ccode\u003eMergeFrom()\u003c/code\u003e, and \u003ccode\u003eWriteTo()\u003c/code\u003e to support object manipulation, comparison, and data stream handling.\u003c/p\u003e\n"],["\u003cp\u003eKey properties include \u003ccode\u003eBounds\u003c/code\u003e which holds the monotonically increasing values defining bucket boundaries, \u003ccode\u003eDescriptor\u003c/code\u003e and \u003ccode\u003eParser\u003c/code\u003e which are used for the message structure and parsing, and \u003ccode\u003eBoundsFieldNumber\u003c/code\u003e, for internal field management.\u003c/p\u003e\n"]]],[],null,["# Class Distribution.Types.BucketOptions.Types.Explicit (2.17.0)\n\nVersion latestkeyboard_arrow_down\n\n- [2.17.0 (latest)](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.Distribution.Types.BucketOptions.Types.Explicit)\n- [2.15.0](/dotnet/docs/reference/Google.Api.CommonProtos/2.15.0/Google.Api.Distribution.Types.BucketOptions.Types.Explicit)\n- [2.10.0](/dotnet/docs/reference/Google.Api.CommonProtos/2.10.0/Google.Api.Distribution.Types.BucketOptions.Types.Explicit)\n- [2.2.0](/dotnet/docs/reference/Google.Api.CommonProtos/2.2.0/Google.Api.Distribution.Types.BucketOptions.Types.Explicit) \n\n public sealed class Distribution.Types.BucketOptions.Types.Explicit : IMessage\u003cDistribution.Types.BucketOptions.Types.Explicit\u003e, IEquatable\u003cDistribution.Types.BucketOptions.Types.Explicit\u003e, IDeepCloneable\u003cDistribution.Types.BucketOptions.Types.Explicit\u003e, IBufferMessage, IMessage\n\nSpecifies a set of buckets with arbitrary widths.\n\nThere are `size(bounds) + 1` (= N) buckets. Bucket `i` has the following\nboundaries:\n\nUpper bound (0 \\\u003c= i \\\u003c N-1): bounds\\[i\\]\nLower bound (1 \\\u003c= i \\\u003c N); bounds\\[i - 1\\]\n\nThe `bounds` field must contain at least one element. If `bounds` has\nonly one element, then there are no finite buckets, and that single\nelement is the common boundary of the overflow and underflow buckets. \n\nInheritance\n-----------\n\n[object](https://learn.microsoft.com/dotnet/api/system.object) \\\u003e Distribution.Types.BucketOptions.Types.Explicit \n\nImplements\n----------\n\n[IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage-1.html)[Distribution](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.Distribution)[Types](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.Distribution.Types)[BucketOptions](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.Distribution.Types.BucketOptions)[Types](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.Distribution.Types.BucketOptions.Types)[Explicit](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.Distribution.Types.BucketOptions.Types.Explicit), [IEquatable](https://learn.microsoft.com/dotnet/api/system.iequatable-1)[Distribution](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.Distribution)[Types](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.Distribution.Types)[BucketOptions](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.Distribution.Types.BucketOptions)[Types](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.Distribution.Types.BucketOptions.Types)[Explicit](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.Distribution.Types.BucketOptions.Types.Explicit), [IDeepCloneable](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IDeepCloneable-1.html)[Distribution](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.Distribution)[Types](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.Distribution.Types)[BucketOptions](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.Distribution.Types.BucketOptions)[Types](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.Distribution.Types.BucketOptions.Types)[Explicit](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.Distribution.Types.BucketOptions.Types.Explicit), [IBufferMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IBufferMessage.html), [IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage.html) \n\nInherited Members\n-----------------\n\n[object.Equals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)) \n[object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype) \n[object.ReferenceEquals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.referenceequals)\n\nNamespace\n---------\n\n[Google.Api](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api)\n\nAssembly\n--------\n\nGoogle.Api.CommonProtos.dll\n\nConstructors\n------------\n\n### Explicit()\n\n public Explicit()\n\n### Explicit(Explicit)\n\n public Explicit(Distribution.Types.BucketOptions.Types.Explicit other)\n\nFields\n------\n\n### BoundsFieldNumber\n\n public const int BoundsFieldNumber = 1\n\nField number for the \"bounds\" field.\n\nProperties\n----------\n\n### Bounds\n\n public RepeatedField\u003cdouble\u003e Bounds { get; }\n\nThe values must be monotonically increasing.\n\n### Descriptor\n\n public static MessageDescriptor Descriptor { get; }\n\n### Parser\n\n public static MessageParser\u003cDistribution.Types.BucketOptions.Types.Explicit\u003e Parser { get; }\n\nMethods\n-------\n\n### CalculateSize()\n\n public int CalculateSize()\n\n### Clone()\n\n public Distribution.Types.BucketOptions.Types.Explicit Clone()\n\n### Equals(Explicit)\n\n public bool Equals(Distribution.Types.BucketOptions.Types.Explicit other)\n\n### Equals(object)\n\n public override bool Equals(object other)\n\n**Overrides** \n[object.Equals(object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object))\n\n### GetHashCode()\n\n public override int GetHashCode()\n\n**Overrides** \n[object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode)\n\n### MergeFrom(Explicit)\n\n public void MergeFrom(Distribution.Types.BucketOptions.Types.Explicit other)\n\n### MergeFrom(CodedInputStream)\n\n public void MergeFrom(CodedInputStream input)\n\n### ToString()\n\n public override string ToString()\n\n**Overrides** \n[object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)\n\n### WriteTo(CodedOutputStream)\n\n public void WriteTo(CodedOutputStream output)"]]