可空类型
从C#2.0开始引入可空类型,每一个值类型都对应一个可空类型。可空类型是System.Nullable结构的实例。可空类型可以表示其基础值类型正常范围内的值再加上一个null值。可空类型主要用于数据库编程,在处理数据库和其他包含可能未赋值元素的数据类型时,将null赋值给数值类型或布尔型的功能特别有用,例如,数据库中的布尔型字段可以存储值true或false,或者该字段也可以为空。可空类型的定义语法是用“数据类型?”来定义变量,如:
int? i=10;
double? dl=3.14;
bool? flag=null;
char? letter='a';
int? []arr=new int? [10];
下面是可空类型具体的使用示例:
class Test
{
static void Main()
{
int? num=null;
if(num.HasValue==true)
System.Console.WriteLine("num="+num.Value);
else
System.Console.WriteLine("num=Null");
//将y设置为默认值0
int y=num.GetValueOrDefault();
//假如num有值,将y设置为num的值,等效于y=num.Value
if (num.HasValue)
y=(int)num;
//假如num为空则y为-1,num不为空将num的值给y
y=num??-1;
Console.WriteLine(y);
}
}
运行结果:
num=Null
-1
可空类型支持“??”运算符,“??”运算符定义在将可空类型分配给非可空类型时返回的默认值。可空类型如果有值那么可以强行转换成对应值类型,或者也可以使用其Value属性直接赋值给同类值类型。使用可空类型的HasValue属性可以先判断可空类型变量里是否有值。可空类型的变量除了具有可以为空这个特性外,其他的均和普通值类型相同,比如可以使用各种一元或二元运算符。可空类型是非常常用的类型,在Java里值类型都有一套对应包装类型(类似于可空类型),在以前我们使用C#编程时往往都会自己定义一套可空类型。原因在于普通的值类型是必须有值的,不管是0还是-1,它们都是有意义的,可空类型解决了这个问题,它可以使变量的值为空,空就是空,不表示任何数值。
命名空间——区别同名类
命名空间主要用来区别同名的两个类。我们说美国有个牛顿,中国牛家村也有个牛顿,那么当你提到牛顿的时候你就应该加上一些限制了,比如你可以说“牛家村牛顿去年卖了三头牛”,但你如果说“牛顿有两儿子”,那么我肯定不知道你在说谁。命名空间的作用跟此相似,主要是用来区别可能同名的类(上面的美国和中国可以看作是命名空间)。当然,我们通常把命名空间看作比类更大的容器,它可以用来组织和存放类及其他类型。声明命名空间用namespace关键字定义,定义方式很简单,比如下面我们定义了两个同名的类,它们分别位于各自的命名空间中:
namespace China
{
class Girl
{
private string name;
}
}
namespace France
{
class Girl
{
private string name;
}
}
命名空间也可以嵌套:
namespace China
{
namespace Haier
{
class TV
{
private string name;
}
}
}
要使用命名空间里的类,原则上应该加上空间的名字,如:
France.Girl g=new France.Girl();
China.Haier.TV tv=China.Haier.TV();
当然,系统提供给你一种先引用命名空间后使用的方式,可以使你不必每次都带上命名空间的名称。你可以使用using关键字导入你需要的命名空间,然后你就可以使用此命名空间里面的内容了。导入命名空间的语句应该写在当前代码文件的开头部分,一旦导入了命名空间,那么此文件的任何部分都可以直接使用此命名空间里面的内容了,如:
using System;
using China.Haier;
namespace Test
{
class Program
{
static void Main(string[] args)
{
//定义Haier电视
TV tv=new TV();
}
}
}
数学类
数学类(Math)为三角函数、对数函数和其他通用数学函数提供常数和静态操作方法。因此对于数学类,你不必创建其实例,直接使用类名加数学方法即可。常用数学方法如下:
方法 说明
Abs 求绝对值
Max 求较大的一个
Min 求较小的一个
Sqrt 求平方根
Floor 求小于或等于该数的最大整数
Ceiling 求大于或等于该数的最小整数
Exp 求e的指定次幂
Pow 求x的y次幂
Round 求四舍五入后的值
Truncate 求数字的整数部分
PI 求返回PI的值
Cos 求余弦值
Sin 求正弦值
Tan 求正切值
//将y设置为默认值0
int y=num.GetValueOrDefault();
//假如num有值,将y设置为num的值,等效于y=num.Value
if (num.HasValue)
y=(int)num;
//假如num为空则y为-1,num不为空将num的值给y
y=num??-1;
Console.WriteLine(y);
}
}
运行结果:
num=Null
-1
可空类型支持“??”运算符,“??”运算符定义在将可空类型分配给非可空类型时返回的默认值。可空类型如果有值那么可以强行转换成对应值类型,或者也可以使用其Value属性直接赋值给同类值类型。使用可空类型的HasValue属性可以先判断可空类型变量里是否有值。可空类型的变量除了具有可以为空这个特性外,其他的均和普通值类型相同,比如可以使用各种一元或二元运算符。可空类型是非常常用的类型,在Java里值类型都有一套对应包装类型(类似于可空类型),在以前我们使用C#编程时往往都会自己定义一套可空类型。原因在于普通的值类型是必须有值的,不管是0还是-1,它们都是有意义的,可空类型解决了这个问题,它可以使变量的值为空,空就是空,不表示任何数值。
命名空间——区别同名类
命名空间主要用来区别同名的两个类。我们说美国有个牛顿,中国牛家村也有个牛顿,那么当你提到牛顿的时候你就应该加上一些限制了,比如你可以说“牛家村牛顿去年卖了三头牛”,但你如果说“牛顿有两儿子”,那么我肯定不知道你在说谁。命名空间的作用跟此相似,主要是用来区别可能同名的类(上面的美国和中国可以看作是命名空间)。当然,我们通常把命名空间看作比类更大的容器,它可以用来组织和存放类及其他类型。声明命名空间用namespace关键字定义,定义方式很简单,比如下面我们定义了两个同名的类,它们分别位于各自的命名空间中:
namespace China
{
class Girl
{
private string name;
}
}
namespace France
{
class Girl
{
private string name;
}
}
命名空间也可以嵌套:
namespace China
{
namespace Haier
{
class TV
{
private string name;
}
}
}
要使用命名空间里的类,原则上应该加上空间的名字,如:
France.Girl g=new France.Girl();
China.Haier.TV tv=China.Haier.TV();
当然,系统提供给你一种先引用命名空间后使用的方式,可以使你不必每次都带上命名空间的名称。你可以使用using关键字导入你需要的命名空间,然后你就可以使用此命名空间里面的内容了。导入命名空间的语句应该写在当前代码文件的开头部分,一旦导入了命名空间,那么此文件的任何部分都可以直接使用此命名空间里面的内容了,如:
using System;
using China.Haier;
namespace Test
{
class Program
{
static void Main(string[] args)
{
//定义Haier电视
TV tv=new TV();
}
}
}
数学类
数学类(Math)为三角函数、对数函数和其他通用数学函数提供常数和静态操作方法。因此对于数学类,你不必创建其实例,直接使用类名加数学方法即可。常用数学方法如下:
方法 说明
Abs 求绝对值
Max 求较大的一个
Min 求较小的一个
Sqrt 求平方根
Floor 求小于或等于该数的最大整数
Ceiling 求大于或等于该数的最小整数
Exp 求e的指定次幂
Pow 求x的y次幂
Round 求四舍五入后的值
Truncate 求数字的整数部分
PI 求返回PI的值
Cos 求余弦值
Sin 求正弦值
Tan 求正切值
可空类型
从C#2.0开始引入可空类型,每一个值类型都对应一个可空类型。可空类型是System.Nullable结构的实例。可空类型可以表示其基础值类型正常范围内的值再加上一个null值。可空类型主要用于数据库编程,在处理数据库和其他包含可能未赋值元素的数据类型时,将null赋值给数值类型或布尔型的功能特别有用,例如,数据库中的布尔型字段可以存储值true或false,或者该字段也可以为空。可空类型的定义语法是用“数据类型?”来定义变量,如:
int? i=10;
double? dl=3.14;
bool? flag=null;
char? letter='a';
int? []arr=new int? [10];
下面是可空类型具体的使用示例:
class Test
{
static void Main()
{
int? num=null;
if(num.HasValue==true)
System.Console.WriteLine("num="+num.Value);
else
System.Console.WriteLine("num=Null");
//将y设置为默认值0
int y=num.GetValueOrDefault();
//假如num有值,将y设置为num的值,等效于y=num.Value
if (num.HasValue)
y=(int)num;
//假如num为空则y为-1,num不为空将num的值给y
y=num??-1;
Console.WriteLine(y);
}
}
运行结果:
num=Null
-1
可空类型支持“??”运算符,“??”运算符定义在将可空类型分配给非可空类型时返回的默认值。可空类型如果有值那么可以强行转换成对应值类型,或者也可以使用其Value属性直接赋值给同类值类型。使用可空类型的HasValue属性可以先判断可空类型变量里是否有值。可空类型的变量除了具有可以为空这个特性外,其他的均和普通值类型相同,比如可以使用各种一元或二元运算符。可空类型是非常常用的类型,在Java里值类型都有一套对应包装类型(类似于可空类型),在以前我们使用C#编程时往往都会自己定义一套可空类型。原因在于普通的值类型是必须有值的,不管是0还是-1,它们都是有意义的,可空类型解决了这个问题,它可以使变量的值为空,空就是空,不表示任何数值。
命名空间——区别同名类
命名空间主要用来区别同名的两个类。我们说美国有个牛顿,中国牛家村也有个牛顿,那么当你提到牛顿的时候你就应该加上一些限制了,比如你可以说“牛家村牛顿去年卖了三头牛”,但你如果说“牛顿有两儿子”,那么我肯定不知道你在说谁。命名空间的作用跟此相似,主要是用来区别可能同名的类(上面的美国和中国可以看作是命名空间)。当然,我们通常把命名空间看作比类更大的容器,它可以用来组织和存放类及其他类型。声明命名空间用namespace关键字定义,定义方式很简单,比如下面我们定义了两个同名的类,它们分别位于各自的命名空间中:
namespace China
{
class Girl
{
private string name;
}
}
namespace France
{
class Girl
{
private string name;
}
}
命名空间也可以嵌套:
namespace China
{
namespace Haier
{
class TV
{
private string name;
}
}
}
要使用命名空间里的类,原则上应该加上空间的名字,如:
France.Girl g=new France.Girl();
China.Haier.TV tv=China.Haier.TV();
当然,系统提供给你一种先引用命名空间后使用的方式,可以使你不必每次都带上命名空间的名称。你可以使用using关键字导入你需要的命名空间,然后你就可以使用此命名空间里面的内容了。导入命名空间的语句应该写在当前代码文件的开头部分,一旦导入了命名空间,那么此文件的任何部分都可以直接使用此命名空间里面的内容了,如:
using System;
using China.Haier;
namespace Test
{
class Program
{
static void Main(string[] args)
{
//定义Haier电视
TV tv=new TV();
}
}
}
数学类
数学类(Math)为三角函数、对数函数和其他通用数学函数提供常数和静态操作方法。因此对于数学类,你不必创建其实例,直接使用类名加数学方法即可。常用数学方法如下:
方法 说明
Abs 求绝对值
Max 求较大的一个
Min 求较小的一个
Sqrt 求平方根
Floor 求小于或等于该数的最大整数
Ceiling 求大于或等于该数的最小整数
Exp 求e的指定次幂
Pow 求x的y次幂
Round 求四舍五入后的值
Truncate 求数字的整数部分
PI 求返回PI的值
Cos 求余弦值
Sin 求正弦值
Tan 求正切值