C# Learning Notes

C# Learning Notes

This is just learning notes on C# and CLR.

Terminology

CLR: Common Language Runtime.
FCL: Framework Class Library.
CLS: Common Language Specification.
CTS: Common Type System.

Types

Primitive Types

Any data types the compiler directly support are called primitive types. Primitive types map directly to types existing in Framework Class Library.

Type Conversion

C# allows implicit casts if the conversion is “safe”, that is, no loss of data is possible, such as converting an Int32 to Int64. But C# requires explicit casts if the conversion is potentially unsafe.

Literals

In addition to casting, primitive casts can be written as literals. A literal is considered as an instance of the type itself, and therefore, you can call instance methods on literals.

Reference Type

Reference type instances are always allocated from the managed heap. And not explicitly initialized memory is always set to 0(in the object). And garbage collection works.
By default, when a reference type variable is created, it’s initialized to null, indicating that reference type variable doesn’t currently point to a valid object. Attempting to null reference type variable will cause a NullReferenceException to be thrown.

Value Type

Value type instances are usually allocated on the thread stack (althought they can also be embedded in objects as fields).

Value Type vs Reference Type
  • When indicating value types, it’s usually called structures or enumerations. When indicating reference types, it’s usually called classes. (In the documentations)
  • Value type objects have two representations: an unboxed form and a boxed form. Reference type objects are always in a boxed form.
  • You should be aware that Microsoft’s C# compiler selects Layout.Auto for reference types and Layout.Sequential for value types. It’s obvious that the C# compiler team believes that structures are commonly used when interoperating with unmanaged code.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值