C# 知识汇总(一)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
一 、语句
1、是构造所有C#程序的过程构造块。可声明局部变量或常数,调用方法,创建对象或将值赋予变量、属性或字段
Const int i=4;
String str=””;
for(int i=0;i<10;i++)
Program pg=new Program();
Pg.Demo(str);
2,用大括号括起来的一系列语句构成代码块,在代码块中声明的变量或常数只可以用于同一代码块中的语句(例如一个方法的形参)
Public string Demo(string s)
{
S+=
”
AAA
“;
}
3、语句分类:
1)条件语句:根据某个条件是否为true来将程序控制权移交给指定的流
If(){}……else{} 每次只有两个分支
int
a = 9;
int b = 7;
if (a > b)
{
Console.WriteLine("a>b");
Console.WriteLine(a+">"+b);
}
else if (a < b)
{
Console.WriteLine("a<b");
Console.WriteLine(a + "<" + b);
}
else if (a == b)
{
Console.WriteLine("a=b");
Console.WriteLine(a + "=" + b);
}
else
{
Console.WriteLine("
无法比较"
);
}
swicth(变量) 根据变量可取的的某几个特定的值进行分支
int grade=89;
switch (grade / 10)
{
case 10:
Console.WriteLine("
你做的非常好,得了100分"
);
break;
case 9:
Console.WriteLine("
优秀"
);
break;
case 8:
Console.WriteLine("
良好"
);
break;
case 7:
Console.WriteLine("
中等"
);
break;
case 6:
Console.WriteLine("
及格"
);
break;
default :
Console.WriteLine("
不及格"
);
break;
}
2)循环语句
通过使用迭代语句可以创建循环。迭代语句导致嵌入语句根据循环终止条件多次执行。除非遇到跳转语句,否则这些语句将按顺序执行。
While(条件为真)
{
执行操作
}
Do
{
执行语句;
}while(条件是否为真)
For(int i=0;i<常值;i++)//是针对知道循环次数的循环
{
执行操作(可读可改)
}
Foreach(var v in 集合或数组名)
{
只能对其进行读取,而不能做其他修改方面的操作
}
3跳转语句
Break 跳出所有循环
Continue 跳出本次循环
Goto 跳到某个标志位
static void <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />Main(string[] args)
{
goto Mark;
Console.WriteLine("第一行");
Mark:
Console.WriteLine("第二行");
}
Return 返回 下面的代码不执行(对以后的代码实现屏蔽作用
Throw 抛出异常,之后的代码不再执行,转到catch 捕获此异常
4)异常处理语句
C# 为处理在程序执行期间可能出现的反常情况(称作异常)提供内置支持。这些异常由正常控制流之外的代码处理。
可以组织搭配的几种可行情况:
Try ……catch
Try…….finally
Try …….catch…..finally
其中catch 可以有多个,且范围由小到大排列
5)check 和unchecked常用于对×××算数运算和转换显示启用和取消溢出检查
二 结构
1、结构是一种自定义类型,且是一种值类型,通常用来封装小型相关变量组,new出的对象具有值类型的特性
2、由于结构不使用引用,因此结构没有标识;无法区分具有相同数据的两个值类型实例。
3、所有的值类型都继承自ValueType,所有的引用类型都继承自Object
4、结构的特点:
结构是值类型,而类是引用类型。
与类不同,结构的实例化可以不使用 new 运算符。
struct MyStr
{
public int i;
}
MyStr ms1=new MyStr();
MyStr ms2;
ms2.i=10;
结构可以声明构造函数,但它们必须带参数。
一个结构不能从另一个结构或类继承,而且不能作为一个类的基类。所有结构都直接继承自 System.ValueType,后者继承自 System.Object。
结构可以实现接口。
结构可用作可为 null 的类型,因而可向其赋 null 值。
成员的访问修饰符可是private,public但不可以是protected因为结构不能继承
结构可以包含构造函数(有惨),常量。字段,方法,属性,索引器,事件 和嵌套类
其中的普通字段,如有构造函数,则必须在构造函数中初始化。如没有,字段会自动初始化
静态字段,常量字段不需要自构造函数中初始化,
在结构中,静态字段和常量用结构名调用
普通方法实例化后调用
静态方法用结构名调用
三、枚举
1。用enum声明;是一种由一组称为枚举数列表的命名常量组成的独特类型
Menu是枚举类型
每种枚举类型都有基础类型,该类型可以是除 char 以外的任何整型。枚举元素的默认基础类型为 int。默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1。
枚举本质
internal struct Menu:System.Enum
{
public const Menu 文件=(Menu)1;
public const Menu 编辑=(Menu)2;
public const Menu 视图=(Menu)4;
Public Int32 value_;
}
每个枚举对象,都是一个结构的对象
属性枚举(位标志)
将 System.FlagsAttribute 应用于某个枚举时,该枚举就包含一些使用按位“或”运算组合的元素。
[Flags]
enum Menu
{
文件=1,
编辑=2,
视图=4
}
Menu m = Menu.编辑|Menu .文件;
Console.WriteLine(m);
----------------------------------
//==若未启用位标记,如果 value 等于某个已命名的枚举常数,则返回该常数或常数组合的名称;否则返回 value 的等效十进制数
//FlagsAttribute 自定义属性应用于枚举(以启用了位标记[Flags],且value的值必须是按这种有规律分部赋值的)
//Console.WriteLine(Enum.Format(typeof(Days), 56, "G"));
//以十六进制形式表示 value(不带前导“0x”) 不管有没有设位标记
//Console.WriteLine(Enum.Format(typeof(Days), 4, "X"));
// 和“G”或“g”执行的行为是相同的,如果使用“F”或“f”只是在 Enum 声明中不需要 FlagsAttribute。
//还需有规律分部value值=========返回是已命名的枚举常数的组合或单个常数 或 value的等效十进制数
//Console.WriteLine(Enum.Format(typeof(Days), 56, "F"));
//以十进制形式表示 value。
//Console.WriteLine(Enum.Format(typeof(Days), 4, "D"));
//返回具有指定值的常数的名称(位标记在此无用),若不存在 什么也不输出
//Console.WriteLine(Enum.GetName(typeof(Days),16));
//得到string类型的数组 ====Enum .GetNames(typeof(Days))
foreach(string v in Enum .GetNames(typeof(Days)))
{
Console.WriteLine(v);
}
---------------------------
//返回指定枚举的基础类型 System.Int32
Console.WriteLine(Enum.GetUnderlyingType (typeof(Days)));
//检索指定枚举中常数值的数组
foreach (var c in Enum.GetValues(typeof(Days)))
{
Console.WriteLine(c);
}
//getNmae GetValues 输出一致
//是否存在具有指定值的常数指示
Console.WriteLine(Enum.IsDefined(typeof (Days ),3));
//周一对应的数字
Console.WriteLine((int)Enum .Parse (typeof (Days ),"周一"));
Console.WriteLine((int)(Days )Enum.Parse(typeof(Days), "周一"));
//直接输出周一
Console.WriteLine((Days)Enum.Parse(typeof(Days), "周一"));
Console.WriteLine(Enum.Parse(typeof(Days), "周一"));
//得到数值对应的枚举常数的组和
Console.WriteLine(Enum.ToObject(typeof (Days ),3));
转载于:https://blog.51cto.com/1813676/364913