<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 相等比較(C# 編程指南) 有時必須比較兩個值是否相等。在某些情況下,您測試的是“值相等性”(也稱為“等效性”),意即兩個變量包含的值相等。而在其他情況下,則必須確定兩個變量是否引用內存中的同一基礎對象。這種類型的相等性稱為“引用相等性”(或“標識”)。本主題描述這兩種相等性,并提供指向其他主題的鏈接以了解更多信息。 ## 引用相等性 引用相等性是指兩個對象引用均引用同一基礎對象。這可以通過簡單的賦值來實現,如下面的示例所示。 ``` using System; class Test { public int Num { get; set; } public string Str { get; set; } static void Main() { Test a = new Test() { Num = 1, Str = "Hi" }; Test b = new Test() { Num = 1, Str = "Hi" }; bool areEqual = System.Object.ReferenceEquals(a, b); // False: System.Console.WriteLine("ReferenceEquals(a, b) = {0}", areEqual); // Assign b to a. b = a; // Repeat calls with different results. areEqual = System.Object.ReferenceEquals(a, b); // True: System.Console.WriteLine("ReferenceEquals(a, b) = {0}", areEqual); // Keep the console open in debug mode. Console.WriteLine("Press any key to exit."); Console.ReadKey(); } } ``` 在此代碼中,創建了兩個對象,但在賦值語句后,這兩個引用所引用的是同一對象。因此,它們具有引用相等性。使用 [ReferenceEquals](https://msdn.microsoft.com/zh-CN/library/system.object.referenceequals.aspx) 方法來確定兩個引用是否引用同一對象。 引用相等性的概念僅適用于引用類型。由于在將值類型的實例賦給變量時將建立值的副本,因此值類型對象無法具有引用相等性。因此,永遠不能有引用內存中的同一位置的兩個未裝箱結構。此外,如果您使用 [ReferenceEquals](https://msdn.microsoft.com/zh-CN/library/system.object.referenceequals.aspx) 來比較兩個值類型,結果將始終為 **false**,即使對象中包含的值都相同也是如此。這是因為每個變量都會被裝箱到單獨的對象實例中。有關更多信息,請參見[如何:測試引用相等性(標識)(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/dd183759.aspx)。 ## 值相等性 值相等性是指兩個對象包含相同的一個或多個值。對于基元值類型(例如 [int](https://msdn.microsoft.com/zh-CN/library/5kzh1b5w.aspx) 或 [bool](https://msdn.microsoft.com/zh-CN/library/c8f5xwh7.aspx)),針對值相等性的測試簡單明了。您可以使用 [==](https://msdn.microsoft.com/zh-CN/library/53k8ybth.aspx) 運算符,如下面的示例所示。 ``` int a = GetOriginalValue(); int b = GetCurrentValue(); // Test for value equality. if( b == a) { // The two integers are equal. } ``` 對于大多數其他類型,針對值相等性的測試較為復雜,因為它需要您了解類型對值相等性的定義方式。對于具有多個字段或屬性的類和結構,值相等性的定義通常是指所有字段或屬性都具有相同的值。例如,如果 pointA.X 等于 pointB.X,并且 pointA.Y 等于 pointB.Y,則可以將兩個 **Point** 對象定義為相等。 不過,并不要求類型中的所有字段均相等。只需子集相等即可。在比較不屬于您的類型時,應確保明確了解相等性對于該類型是如何定義的。有關如何在您自己的類和結構中定義值相等性的更多信息,請參見[如何:為類型定義值相等性(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/dd183755.aspx)。 ### 浮點值的值相等性 由于二進制計算機上浮點算法的不精確性,因此浮點值([double](https://msdn.microsoft.com/zh-CN/library/678hzkk9.aspx) 和 [float](https://msdn.microsoft.com/zh-CN/library/b1e65aza.aspx))的相等比較會出現問題。有關更多信息,請參見主題 [System.Double](https://msdn.microsoft.com/zh-CN/library/system.double.aspx) 中的備注。 ## 相關主題 | 標題 | 描述 | | --- | --- | | [如何:測試引用相等性(標識)(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/dd183759.aspx) | 描述如何確定兩個變量是否具有引用相等性。 | | [如何:為類型定義值相等性(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/dd183755.aspx) | 描述如何為類型提供值相等性的自定義定義。 | | [C# 編程指南](https://msdn.microsoft.com/zh-CN/library/67ef8sbd.aspx) | 提供一些鏈接,這些鏈接指向有關重要的 C# 語言功能以及通過 .NET Framework 提供給 C# 的功能的詳細信息。 | | [類型(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173104.aspx) | 提供有關 C# 類型系統的信息以及指向附加信息的鏈接。 | ## 請參閱 [C# 編程指南](https://msdn.microsoft.com/zh-CN/library/67ef8sbd.aspx)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看