-
数据类型
值类型:从类 System.ValueType 中派生
类型 | 描述 | 范围 | 默认值 |
---|---|---|---|
bool | 布尔值 | True 或 False | False |
byte | 8 位无符号整数 | 0 到 255 | 0 |
char | 16 位 Unicode 字符 | U +0000 到 U +ffff | '\0' |
decimal | 128 位精确的十进制值,28-29 有效位数 | (-7.9 x 1028 到 7.9 x 1028) / 100 到 28 | 0.0M |
double | 64 位双精度浮点型 | (+/-)5.0 x 10-324 到 (+/-)1.7 x 10308 | 0.0D |
float | 32 位单精度浮点型 | -3.4 x 1038 到 + 3.4 x 1038 | 0.0F |
int | 32 位有符号整数类型 | -2,147,483,648 到 2,147,483,647 | 0 |
long | 64 位有符号整数类型 | -923,372,036,854,775,808 到 9,223,372,036,854,775,807 | 0L |
sbyte | 8 位有符号整数类型 | -128 到 127 | 0 |
short | 16 位有符号整数类型 | -32,768 到 32,767 | 0 |
uint | 32 位无符号整数类型 | 0 到 4,294,967,295 | 0 |
ulong | 64 位无符号整数类型 | 0 到 18,446,744,073,709,551,615 | 0 |
ushort | 16 位无符号整数类型 | 0 到 65,535 | 0 |
引用类型:
- 引用类型不包含存储在变量中的实际数据,只包含对变量的引用
- 引用对象指向一个内存位置
- 内置的 引用类型有:object、dynamic 和 string
- 对象类型object是c#中所有类的基类,故通过类型转换,object类型可以被分配其他类型的值
装箱:将值类型转换为对象类型
拆箱:将对象类型转换为值类型 - 动态类型dynamic可以存储任何类型的值
对象类型变量的类型检查发生在编译时,而动态类型的类型检查是在运行时 - 字符串类型string派生自object类,通过"引号实现(@可实现原始字符串类型)
指针类型:
指针类型存储指向数据的内存地址
using System;
namespace CSharpBasic {
public class CSharp{
static void Main (String[] args) {
/*数据类型:*/
//值类型
int a = 3;
double b = 3.45;
float c = 2.33f;
Console.WriteLine("int:{0}\tdouble:{1}\tfloat:{2}",a,b,c);
//引用类型
object d = 129;//装箱,对象类型
dynamic e = 133;//动态类型
string f = "JianShu";//字符串
string g = @"
object d = 129;//装箱,对象类型
dynamic e = 133;//动态类型
string f = 'JianShu';//字符串";
Console.WriteLine("object:{0}\tdynamic:{1}\tstring:{2}",d,e,f);
Console.WriteLine("@string:{0}",g);
}
}
}
F:\Jn\C#\CSHARP>csharp_basic
int:3 double:3.45 float:2.33
object:129 dynamic:133 string:JianShu
@string:
object d = 129;//装箱,对象类型
dynamic e = 133;//动态类型
string f = 'JianShu';//字符串
-
类型转换
-
隐式类型转换:C# 默认的以安全方式进行的转换,,不会导致数据丢失
例:从小的整数类型转换为大的整数类型,从派生类转换为基类 -
显式类型转换:显式类型转换,即强制类型转换
显式转换需要强制转换运算符,而且强制转换可能会造成数据丢失 - c#提供的类型转换方法如下:
方法 | 描述 |
---|---|
ToBoolean | 如果可能的话,把类型转换为布尔型 |
ToByte | 把类型转换为字节类型 |
ToChar | 如果可能的话,把类型转换为单个 Unicode 字符类型 |
ToDateTime | 把类型(整数或字符串类型)转换为 日期-时间 结构 |
ToDecimal | 把浮点型或整数类型转换为十进制类型 |
ToDouble | 把类型转换为双精度浮点型 |
ToInt16 | 把类型转换为 16 位整数类型 |
ToInt32 | 把类型转换为 32 位整数类型 |
ToInt64 | 把类型转换为 64 位整数类型 |
ToSbyte | 把类型转换为有符号字节类型 |
ToSingle | 把类型转换为小浮点数类型 |
ToString | 把类型转换为字符串类型 |
ToType | 把类型转换为指定类型 |
ToUInt16 | 把类型转换为 16 位无符号整数类型 |
ToUInt32 | 把类型转换为 32 位无符号整数类型 |
ToUInt64 | 把类型转换为 64 位无符号整数类型 |
using System;
namespace CSharpBasic {
public class CSharp{
static void Main (String[] args) {
/*类型转换 */
int h = 12;
double i = 17.9;
float j = 12.4f;
bool k = true;
Console.WriteLine("(int)i:{0}",(int)i);
Console.WriteLine("h.ToString():{0}\ti.ToString():{1}\tj.ToString():{2}\tk.ToString:{3}",h,i,j,k);
Console.WriteLine(Convert.ToString(12.562));
}
}
}
(int)i:17
h.ToString():12 i.ToString():17.9 j.ToString():12.4 k.ToString:True
12.562
-
常量
- 常量和变量的基本规则一致,只是常量一旦定义,则不会能再更改其值
- 常量通过关键字const实现
using System;
namespace CSharpBasic {
public class CSharp{
static void Main (String[] args) {
/*用户输入 */
Console.Write("Please enter a number : ");
Console.WriteLine(Convert.ToInt32(Console.ReadLine()));
/*常量 */
const int l = 12;
Console.WriteLine("const:{0}",l);
}
}
}
Please enter a number : 123
123
const:12
-
运算符
- 算数运算符
加:+ 减:- 乘:* 除:/ 取余:% 自增:++ 自减:-- - 关系运算符
等于:== 不等于:!= 大于:> 大于等于:>= 小于:< 小于等于:<= - 逻辑运算符
逻辑与:&& 逻辑或:|| 逻辑非:! - 位运算符
按位与:& 按位或:| 按位取反:! 按位异或:^ 按位左移:<< 按位右移:>> - 赋值运算符
= += -= *= /= %= <<= >>= &= ^= |= - 其他运算符
sizeof():返回数据类型的大小
typeof():返回类的类型
&:占位符,返回变量的地址
*:指针
?::条件表达式
is:判断对象是否为某一类型
as:强制转换,转换失败也不抛异常 - 优先级
-
判断语句
if;else;else if;switch...case;?:
-
循环语句
while;for;foreach;do...while;break;continue