一些C#随笔

C#关键字

如果想使用关键字作为标识符,可以在关键字前加@,例:@abstract

  • 保留关键字
abstractasbaseboolbreakbytecase
catchcharcheckedclassconstcontinuedecimal
defaultdelegatedodoubleelseenumevent
explicitexternfalsefinallyfixedfloatfor
foreachgotoifimplicitinin(genericmodifier)int
interfaceinternalislocklongnamespacenew
nullobjectoperatoroutout(genericmodifier)overrideparams
privateprotectedpublicreadonlyrefreturnsbyte
sealedshortsizeofstackallocstaticstringstruct
switchthisthrowtruetrytypeofuint
ulonguncheckedunsafeushortusingvirtualvoid
volatilewhile
  • 上下文关键字
addaliasascendingdescendingdynamicfromget
globalgroupintojoinletorderbypartial(type)
partial(method)removeselectset

数据类型

值类型

类型描述范围默认值
bool布尔值True 或 FalseFalse
byte8 位无符号整数0 到 2550
char16 位 Unicode 字符U +0000 到 U +ffff‘\0’
decimal128 位精确的十进制值,28-29 有效位数(-7.9 x 1028 到 7.9 x 1028) / 100 到 280.0M
double64 位双精度浮点型(+/-)5.0 x 10-324 到 (+/-)1.7 x 103080.0D
float32 位单精度浮点型-3.4 x 1038 到 + 3.4 x 10380.0F
int32 位有符号整数类型-2,147,483,648 到 2,147,483,6470
long64 位有符号整数类型-9,223,372,036,854,775,808 到 9,223,372,036,854,775,8070L
sbyte8 位有符号整数类型-128 到 1270
short16 位有符号整数类型-32,768 到 32,7670
uint32 位无符号整数类型0 到 4,294,967,2950
ulong64 位无符号整数类型0 到 18,446,744,073,709,551,6150
ushort16 位无符号整数类型0 到 65,5350

引用类型

内置的引用类型:

  • object
  • dynamic
  • string
object

装箱:值类型转换为对象类型
拆箱:对象类型转换为值类型

dynamic

动态类型与对象类型相似,但对象类型变量的类型检查在编译时发生。而动态类型变量的类型检查在运行时发生。

string

两种分配形式: “” 和 @“”
@“”(逐字字符串)将转义字符 “\” 当作普通字符对待且字符中可以任意换行,换行符及缩进空格都计算在字符串长度之内。

string是特殊的引用类型,从应用角度体现了值类型语义,从内存角度实现为引用类型存储,位于托管堆。

例:

string str1 = "abc";
string str2 = str1;
Console.WriteLine("str1:" + str1 + " str2:" + str2);
//输出为:str1:abc str2:abc
str2 = "cba";
Console.WriteLine("str1:" + str1 + " str2:" + str2);
//输出为:str1:abc str2:cba

这里首先在堆中开辟一个内存空间存储 str1 的值 “abc” (地址1),然后在栈中开辟一个内存空间存储 str1 的内存地址(地址1),当将 str1 的值赋给 str2 时,会在堆中开辟一个新的内存空间用于保存值 “abc”(地址2) ,然后再栈中开辟一个新空间保存 str2 的内存地址(地址2),修改 str2 的值时,再次再堆中开辟一个新的内存空间保存 str2 的新值 “cba” (地址3),然后将 str2 再栈中对应所保存地址修改为新值的地址(地址3),而堆中的 str2 旧值的内存空间(地址2)将在下一次垃圾回收中被回收。

用户自定义引用类型:

  • class
  • interface
  • delegate

指针类型

类型转换

隐式类型转换

将较小范围数据类型转换为较大范围数据类型时,编译器自动完成类型转换,这些转换是C#默认以安全方式进行的转换,不会导致数据丢失。

显式类型转换(强制类型转换)

将较大范围数据类型转换为较小范围数据类型,或将一个对象类型转换为另一个对象数据类型,使用强制类型转换符号进行显式转换,强制转换可能导致数据丢失。

类型转换方法

ToBoolean把类型转换为布尔型
ToByte把类型转换为字节类型
ToChar把类型转换为单个 Unicode 字符类型
ToDateTime把类型(整数或字符串类型)转换为 日期-时间 结构
ToDecimal把浮点型或整数类型转换为十进制类型
ToDouble把类型转换为双精度浮点型
ToInt16把类型转换为 16 位整数类型
ToInt32把类型转换为 32 位整数类型
ToInt64把类型转换为 64 位整数类型
ToSbyte把类型转换为有符号字节类型
ToSingle把类型转换为小浮点数类型
ToString把类型转换为字符串类型
ToType把类型转换为指定类型
ToUInt16把类型转换为 16 位无符号整数类型
ToUInt32把类型转换为 32 位无符号整数类型
ToUInt64把类型转换为 64 位无符号整数类型
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值