⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8.2.4.htm

📁 This ECMA Standard specifies the form and establishes the interpretation of programs written in the
💻 HTM
字号:
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Hyperlinked ECMA C# Language Specification</title><meta name="author" content="Jon Jagger" /><link rel="stylesheet" href="ecma334.css"></link></head><body><div align="right"><em><a href="http://www.jaggersoft.com">Jon Jagger</a></em></div><div align="right"><a href="mailto:jon@jaggersoft.com">jon@jaggersoft.com</a></div><form method="get" action="http://search.atomz.com/search/"><input size="30" name="sp-q"></input><input type="submit" value="Search C# Spec"></input><input type="hidden" name="sp-a" value="sp10024177"></input><input type="hidden" name="sp-f" value="ISO-8859-1"></input></form><a href="toc.htm">Table of Contents</a> <a href="1.htm">1</a> <a href="2.htm">2</a> <a href="3.htm">3</a> <a href="4.htm">4</a> <a href="5.htm">5</a> <a href="6.htm">6</a> <a href="7.htm">7</a> <a href="8.htm">8</a> <a href="9.htm">9</a> <a href="10.htm">10</a> <a href="11.htm">11</a> <a href="12.htm">12</a> <a href="13.htm">13</a> <a href="14.htm">14</a> <a href="15.htm">15</a> <a href="16.htm">16</a> <a href="17.htm">17</a> <a href="18.htm">18</a> <a href="19.htm">19</a> <a href="20.htm">20</a> <a href="21.htm">21</a> <a href="22.htm">22</a> <a href="23.htm">23</a> <a href="24.htm">24</a> <a href="25.htm">25</a> <a href="notes.htm">Notes</a> <a href="HyperlinkedCSharpECMA.zip">Download</a><span class="ruler"></span><span class="heading">ECMA-334 C# Language Specification</span><span class="navigate"><a href="8.2.3.htm"><img src="previous.gif" alt="previous" border="0" /></a><a href="8.3.htm"><img src="next.gif" alt="next" border="0" /></a></span><span class="clause-depth"><a href="7.htm"><img src="previous.gif" alt="previous at this level" border="0" /></a><a href="9.htm"><img src="next.gif" alt="next at this level" border="0" /></a> <span class="clause-number-link"><a href="8.htm">8</a></span><span class="clause-title-previous"> Language Overview</span></span><span class="clause-depth"><a href="8.1.htm"><img src="previous.gif" alt="previous at this level" border="0" /></a><a href="8.3.htm"><img src="next.gif" alt="next at this level" border="0" /></a> <span class="clause-number-link"><a href="8.2.htm">8.2</a></span><span class="clause-title-previous"> Types</span></span><span class="clause-depth"><a href="8.2.3.htm"><img src="previous.gif" alt="previous at this level" border="0" /></a><a href="8.2.4.htm"><img src="next.gif" alt="next at this level" border="0" /></a> <span class="clause-number">8.2.4</span><span class="clause-title"> Type system unification</span></span><span class="informative"><span class="paragraph">C# provides a "unified type system". All types-including value types-derive from the type object. It is possible to call object methods on any value, even values of "primitive" types such as <span class="keyword">int</span>. The example <pre class="code-example">
using System;  
class Test  
{  
   static void Main() {  
      Console.WriteLine(3.ToString());  
   }  
}  
</pre>calls the object-defined ToString method on an integer literal, resulting in the output "3". </span><span class="paragraph">The example <pre class="code-example">
class Test  
{  
   static void Main() {  
      int i = 123;  
      object o = i;   // boxing  
      int j = (int) o;  // unboxing  
   }  
}  
</pre>is more interesting. An <span class="keyword">int</span> value can be converted to object and back again to <span class="keyword">int</span>. This example shows both boxing and unboxing. When a variable of a value type needs to be converted to a reference type, an object box is allocated to hold the value, and the value is copied into the box. Unboxing is just the opposite. When an object box is cast back to its original value type, the value is copied out of the box and into the appropriate storage location. </span><span class="paragraph">This type system unification provides value types with the benefits of object-ness without introducing unnecessary overhead. For programs that don't need <span class="keyword">int</span> values to act like objects, <span class="keyword">int</span> values are simply 32-bit values. For programs that need <span class="keyword">int</span> values to behave like objects, this capability is available on demand. This ability to treat value types as objects bridges the gap between value types and reference types that exists in most languages. For example, a Stack class can provide Push and Pop methods that take and return object values. <pre class="code-example">
public class Stack  
{  
   public object Pop() {...}  
   public void Push(object o) {...}  
}  
</pre></span><span class="paragraph">Because C# has a unified type system, the Stack class can be used with elements of any type, including value types like <span class="keyword">int</span>. </span></span><span class="ruler"></span><table><tr><td><table align="left" bgcolor="navy"><tr bgcolor="navy"><td><font face="Arial,sans-serif" size="6" color="yellow"><strong>{ JSL }</strong></font></td></tr></table></td></tr><tr><td><font face="Arial,sans-serif" size="2" color="navy"><strong>Jagger Software Ltd</strong></font></td></tr><tr><td><font face="Arial,sans-serif" size="2" color="navy"><strong>Company # 4070126</strong></font></td></tr><tr><td><font face="Arial,sans-serif" size="2" color="navy"><strong>VAT # 762 5213 42</strong></font></td></tr></table><img src="valid-html401.png" align="left" height="31" width="88" alt="Valid HTML 4.01" /><img src="vcss.gif" align="left" height="31" width="88" alt="Valid CSS" /></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -