Bla*_*man 5 c# value-type reference-type
我知道C#有值和引用类型,但是你怎么能这样做:
int age = 100;
string blah = age.ToString();
Run Code Online (Sandbox Code Playgroud)
如果age是一个值类型,它有一个ToString方法吗?它是否仅在内部需要时才转换为对象?
Eri*_*ert 11
如果age是一个值类型,它有一个ToString方法吗?
允许值类型具有方法.他们为什么不呢?"在类型上"的方法只是恰好与特定类型相关联的一大块代码 ; 你为什么认为这种类型被归类为"参考类型"还是"价值类型"?
这不是一个修辞问题.我有兴趣了解人们对代码的直觉,特别是当这些直觉不正确时.通过直观地理解人们弄错了什么,我们可以尝试提出更直观的更好的抽象.
它是否仅在内部需要时才转换为对象?
"转换为对象"究竟是什么意思?你的意思是"盒装"?
在许多情况下,必须将值类型装箱.其中一些很简单 - 就像将值类型转换为对象或接口时一样.其中一些是模糊的.(在通用方法中有一些奇怪的情况,我们必须以你可能没想到的方式装箱和拆箱.)
在这种特殊情况下,没有拳击.调用直接在值类型上实现的方法只调用那段代码.没有必要将这个东西视为"对象"; 我们调用的代码块知道事物的类型.
System.Int32继承System.ValueType哪些继承System.Object.
所有类,结构,枚举,数组,可空和委托类型最终都是从对象派生的.所有接口类型和类型参数类型都可以隐式转换为对象.并且所有指针类型既不源自也不可转换为对象
| 归档时间: |
|
| 查看次数: |
1786 次 |
| 最近记录: |