文章目录
- C#环境
- .NET 框架
- 集成开发环境
- 创建一个C#项目
- 数据类型
- 值类型
- 引用类型
- 对象类型object
- 动态类型dynamic
- 字符串类型string
- 指针类型
- 类型转换
- 隐式转换
- 显示转换(强制转换)
- C#提供的类型转换方法
- Convert类
- Parse方法
- TryParse方法
C#环境
.NET 框架
C#是.NET框架的一部分,且用于编写.NET应用程序。.NET框架是一个创新的平台,可以编写Windows应用程序、web应用程序、web服务。
集成开发环境
visual studio支持C#开发。
创建一个C#项目
using System;
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
运行结果为 Hello World! 。
数据类型
值类型
类型 | 描述 |
---|---|
bool | 布尔值 |
byte | 8位无符号整数 |
decimal | 128位精确的十进制值,28-29有效位数 |
double | 64位双精度浮点型 |
float | 32位单精度浮点型 |
int | 32位有符号整型 |
long | 64位有符号整型,长整型 |
sbyte | 8位有符号整数 |
short | 16位有符号整型,短整型 |
uint | 32位无符号整型 |
ulong | 64位无符号整型 |
ushort | 16位无符号整型 |
char | 16 位 Unicode 字符 |
using System;
namespace DataType
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Size of bool: {0}", sizeof(bool));
Console.WriteLine("Size of byte: {0}", sizeof(byte));
Console.WriteLine("Size of decimal: {0}", sizeof(decimal));
Console.WriteLine("Size of double: {0}", sizeof(double));
Console.WriteLine("Size of float: {0}", sizeof(float));
Console.WriteLine("Size of int: {0}", sizeof(int));
Console.WriteLine("Size of short: {0}", sizeof(short));
Console.WriteLine("Size of long: {0}", sizeof(long));
Console.WriteLine("Size of sbyte: {0}", sizeof(sbyte));
Console.WriteLine("Size of uint: {0}", sizeof(uint));
Console.WriteLine("Size of ulong: {0}", sizeof(ulong));
Console.WriteLine("Size of ushort: {0}", sizeof(ushort));
}
}
}
引用类型
内置的引用类型有:object、dynamic和string
对象类型object
object是C#的通用类型中所有数据类型的终极基类(父类),所以object类型就可以被分配任何类型的值。但是在分配值之前需要先进行类型转换。当一个值类型被转变为对象类型时,被称为装箱;反之,一个对象类型转变为一个值类型是,被称为拆箱。
动态类型dynamic
可以存储任何类型的值,编译器会自动检测数据类型。
dynamic <variable_name> = value;
namespace DataType
{
class Program
{
static void Main(string[] args)
{
dynamic test1 = 10;
dynamic test2 = 1.5;
dynamic test3 = 'a';
dynamic test4 = "hello world";
Console.WriteLine("test type is: {0}", test1.GetType());
Console.WriteLine("test type is: {0}", test2.GetType());
Console.WriteLine("test type is: {0}", test3.GetType());
Console.WriteLine("test type is: {0}", test4.GetType());
}
}
}
字符串类型string
字符串类型从对象类型中派生,可以分配任何字符串值。有两种分配形式:引号和@引号。@引号的分配形式被称为逐字字符串,转义字符、换行符、缩进空格等都会被挡住普通字符对待。
namespace DataType
{
class Program
{
static void Main(string[] args)
{
string str1 = "\\adc\t1";
string str2 = @"\\adc\t1";
string str3 = @"\\adc\t1 z
1
2
3";
Console.WriteLine("str1: {0}", str1);
Console.WriteLine("str2: {0}", str2);
Console.WriteLine("str3: {0}", str3);
}
}
}
指针类型
和C/C++中的指针类型一样,存放一个数据的地址。
type* pointername
类型转换
隐式转换
不需要代码指定的转换,一般是低精度向高精度的转换。
显示转换(强制转换)
代码中显示的写明要转换的数据类型,一般是高精度向低精度转换,或者是一个对象类型转变成另外一个数据类型。显示转换可能会出现精度丢失、数据丢失的情况。
namespace DataType
{
class Program
{
static void Main(string[] args)
{
// 隐式转换
int a = 10;
double b = a;
// 显示转换
int c = 256;
byte d = (byte)c;
double e = 1.2345;
int f = (int)e;
Console.WriteLine("b type is:{0},b = {1}", b.GetType(), b);
Console.WriteLine("d type is:{0},d = {1}", d.GetType(), d);
Console.WriteLine("f type is:{0},f = {1}", f.GetType(), f);
}
}
}
隐式转换时,将类型转换为long时,数据类型可能还是int32,因为long没有明确的长度定义,只是说他至少是32位。
C#提供的类型转换方法
Convert类
convert提供了一组静态方法,用于基本数据类型之间的转换。
方法 | 描述 |
---|---|
Convert.ToBoolean(value) | 将类型转换为布尔类型 |
Convert.ToByte(value) | 将类型转换为Byte类型 |
Convert.ToChar(value) | 将类型转换为Char类型 |
Convert.ToDateTime(value) | 将类型转换为DateTime类型 |
Convert.TDecimal(value) | 将类型转换为Decimal类型 |
Convert.ToDouble(value) | 将类型转换为double类型 |
Convert.ToInt16(value) | 将类型转换为短整型 |
Convert.ToInt32(value) | 将类型转换为整型 |
Convert.ToInt64(value) | 将类型转换为长整型 |
Convert.ToSByte(value) | 将类型转换为SByte类型 |
Convert.ToSingle(value) | 将类型转换为单精度浮点型 |
Convert.ToString(value) | 将类型转换为字符串类型 |
Convert.ToUInt16(value) | 将类型转换为无符号短整型 |
Convert.ToUInt32(value) | 将类型转换为无符号整型 |
Convert.ToUInt64(value) | 将类型转换为无符号长整型 |
Parse方法
parse方法用于将字符串转换为对应的数值类型,如果转换失败会抛出异常。
方法 | 描述 |
---|---|
Boolean.Parse(string) | 将字符串解析为布尔类型 |
Convert.ToByte(value) | 将类型转换为Byte类型 |
Char.Parse(string) | 将类型转换为Char类型 |
DateTime.Parse(string) | 将类型转换为DateTime类型 |
Decimal.Parse(string) | 将类型转换为Decimal类型 |
Double.Parse(string) | 将类型转换为double类型 |
Int16.Parse(string) | 将类型转换为短整型 |
Int32.Parse(string) | 将类型转换为整型 |
Int64.Parse(string) | 将类型转换为长整型 |
SByte.Parse(string) | 将类型转换为SByte类型 |
Single.Parse(string) | 将类型转换为单精度浮点型 |
UInt16.Parse(string) | 将类型转换为无符号短整型 |
UInt16.Parse(string) | 将类型转换为无符号整型 |
UInt64.Parse(string) | 将类型转换为无符号长整型 |
TryParse方法
类似于parse方法,但不会抛出异常,而是返回一个布尔值来表示是否返回成功。
方法 | 描述 |
---|---|
Boolean.TryParse(string, out bool) | 尝试将字符串解析为布尔类型,并返回转换结果是否成功 |
Byte.TryParse(string, out byte) | 尝试将字符串解析为Byte类型,并返回转换结果是否成功 |
Char.TryParse(string, out char) | 尝试将字符串解析为Char类型,并返回转换结果是否成功 |
DateTime.TryParse(string, out DateTime) | 尝试将字符串解析为DateTime类型,并返回转换结果是否成功 |
Decimal.TryParse(string, out decimal) | 尝试将字符串解析为Decimal类型,并返回转换结果是否成功 |
Double.TryParse(string, out double) | 尝试将字符串解析为Double类型,并返回转换结果是否成功 |
Int16.TryParse(string, out short) | 尝试将字符串解析为Int16类型,并返回转换结果是否成功 |
Int32.TryParse(string, out int) | 尝试将字符串解析为Int32类型,并返回转换结果是否成功 |
Int64.TryParse(string, out int) | 尝试将字符串解析为Int64类型,并返回转换结果是否成功 |
SByte.TryParse(string, out sbyte) | 尝试将字符串解析为SByte类型,并返回转换结果是否成功 |
Single.TryParse(string, out float) | 尝试将字符串解析为Single类型,并返回转换结果是否成功 |
UInt16.TryParse(string, out ushort) | 尝试将字符串解析为UInt16类型,并返回转换结果是否成功 |
UInt32.TryParse(string, out uint) | 尝试将字符串解析为UInt32类型,并返回转换结果是否成功 |
UInt64.TryParse(string, out ulong) | 尝试将字符串解析为UInt64类型,并返回转换结果是否成功 |