[C#]C#补习——类型和操作符—PART1

简介:

      明年过完年就想跳槽换工作了,所以最近需要开始把C#的一些以前遗漏的知识、忽略掉的、不曾重视过以及模糊的知识给记录下来,以免到时候面试的时候因为一些基础性的东西而找不到工作。

以下是本文所要介绍的内容:

1、基础数值类型

2、字符串类型

 

一、基础数值类型

     在C#中数值类型分为整数型和浮点型,其中需要注意一下几点:

1、整数类型:short类型对应于系统中System.Int16,long类型对应于系统中的System.Int64类型,而一般的int类型则是指对着System.Int32类型,其中System.IntXX,代表的是数值的范围,并不和CPU扯上关系,曾经好像听过Int32是对应32位系统,64对应的是64位系统,我汗!⊙﹏⊙b汗。

 

2、浮点类型:浮点类型分为float和double,分别对应System.Single和System.Double,长度不同,由于其采用近似值的方式,所以会导致在进行类型转换的过程中非常可能会出现精度不准的问题,从而引发系统异常,此时如果想确保精度问题,可采用decimal类型,其确保了精度问题,但由于其长度相比浮点类型较短,所以从浮点转换到decimal时会出现溢出,并且其在计算时速度相比浮点要慢。

 

二、字符串类型

1、字符串类中有个我一直忽略的一个问题就是“@”,在C#中“@”符号是负责字符串中原义字符串的,比如下面的代码:

1
string  str= @"c:\windows\temp\aa.bat" ;

上面是一个标准的转义字符串例子,如果不使用“@”则需要输入一下代码

1
string  str= "c:\\windows\\temp\\aa.bat" ;

依靠“\”来表示转义,而加上“@”以后则变成了原义字符串。

当然这个是我一直认为的“@”的作用,但是后来发现,原来“@”还有一个作用就是“逐字符”,一般来说如下代码在编译的时候是无法通过的:

1
2
3
string  a="第一行
     第二行
         第三行";

因为在第一行后没有加上双引号来结束一行字符,但是通过“@”就可以解决这个问题,一旦在字符串上加上“@”,字符串则会变为逐字符,比如:像上面的代码中加上了“@”则会将每行之间的空格都包含进入,如下代码及效果图:

1
2
3
string  a= @"第一行
     第二行
         第三行" ;

效果图如下:

pic113

 

2、在C#中有关char类型和操作符号还有个小技巧就是,如下代码:

1
2
3
4
char  a = 'a' ;
char  f = 'f' ;
//输出5
Console.WriteLine(f-a);

操作符号“-”可以计算出2个字符之间的距离是多少,还比较好玩,有兴趣的可以试试。


本文转自kyo-yo博客园博客,原文链接:http://www.cnblogs.com/kyo-yo/archive/2010/12/29/CSharp-Tutorial-Types-And-Operators-PART1.html,如需转载请自行联系原作者



目录
相关文章
|
10月前
|
JSON C# 数据格式
【Azure Function】C#独立工作模式下参数类型 ServiceBusReceivedMessage 无法正常工作
Cannot convert input parameter 'message' to type 'Azure.Messaging.ServiceBus.ServiceBusReceivedMessage' from type 'System.String'.
214 73
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
159 3
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
270 2
C# 可空类型(Nullable)
C# 单问号 ? 与 双问号 ??
193 12
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
160 0
|
存储 C#
揭秘C#.Net编程秘宝:结构体类型Struct,让你的数据结构秒变高效战斗机,编程界的新星就是你!
【8月更文挑战第4天】在C#编程中,结构体(`struct`)是一种整合多种数据类型的复合数据类型。与类不同,结构体是值类型,意味着数据被直接复制而非引用。这使其适合表示小型、固定的数据结构如点坐标。结构体默认私有成员且不可变,除非明确指定。通过`struct`关键字定义,可以包含字段、构造函数及方法。例如,定义一个表示二维点的结构体,并实现计算距离原点的方法。使用时如同普通类型,可通过实例化并调用其成员。设计时推荐保持结构体不可变以避免副作用,并注意装箱拆箱可能导致的性能影响。掌握结构体有助于构建高效的应用程序。
520 7
|
开发框架 .NET 编译器
C# 中的记录(record)类型和类(class)类型对比总结
C# 中的记录(record)类型和类(class)类型对比总结
391 0
|
传感器 开发框架 JSON
聊聊 C# dynamic 类型,并分享一个将 dynamic 类型变量转为其它类型的技巧和实例
聊聊 C# dynamic 类型,并分享一个将 dynamic 类型变量转为其它类型的技巧和实例
626 0
|
编译器 C#
C#.Net筑基-类型系统②常见类型 --record是什么类型?
`record`在C#中是一种创建简单、只读数据结构的方式,常用于轻量级数据传输。它本质上是类(默认)或结构体的快捷形式,包含自动生成的属性、`Equals`、`ToString`、解构赋值等方法。记录类型可以继承其他record或接口,但不继承普通类。支持使用`with`语句创建副本。例如,`public record User(string Name, int Age)`会被编译为包含属性、相等比较和`ToString()`等方法的类。记录类型提供了解构赋值和自定义实现,如密封的`sealed`记录,防止子类重写。
230 6
|
存储 安全 Unix
C#.Net筑基-类型系统②常见类型--日期和时间的故事
在System命名空间中,有几种表示日期时间的不可变结构体(Struct):DateTime、DateTimeOffset、TimeSpan、DateOnly和TimeOnly。DateTime包含当前本地或UTC时间,以及最小和最大值;DateTimeOffset增加了时区偏移信息,适合跨时区操作。UTC是世界标准时间,而格林尼治标准时间(GMT)不稳定,已被更精确的UTC取代。DateTimeOffset和DateTime提供了转换为UTC和本地时间的方法,以及各种解析和格式化函数。
265 5