C#基础入门 二
循环语句
- 与C语言中用法相同。
- continue:结束本次循环(continue)后面的代码不再执行,进入下次循环(通常与if连用)。
数组
- 一维数组定义:
int[] intArray;
- 一维数组初始化:定义后,必须对其初始化才能使用
- 动态初始化:数据类型[] 数组名=new 数据类型[数组长度]{元素1,元素2...};动态初始化借助new运算符为数组元素分配内存空间,并赋初值。
- 不给定初值情况下,各元素取默认值,数值型初始值为0,布尔型为false。
- 静态初始化:数据类型[] 数组名={元素1,元素2...}
- 得到数组长度:数组名.Length();得到的值即为数组的长度。
枚举
- 把可能出现的情况一一列举出来,可以使用enum关键字来声明枚举类型,它的值被限制在所列举出来的值中。
- 语法:enum 枚举类型名{枚举值1,枚举值2...},例如:
enum Season{spring,summer,autumn,winter}
其中season相当于int,Season s=Season.summer; - 在内部,一个枚举为每个元素都关联了一个整数值,默认情况下编号从0开始,后面的编号都递增1,spring=0,summer=1...,也可以自己赋值,另外允许多个枚举指定同一个数据值。
结构体
- 是一种自定义数据类型,相当于复合型容器,可以存储多种类型的数据。
- 结构体的声明
struct 结构体名称
{
访问修饰符 结构类型 成员名称;
访问修饰符 结构类型 成员名称;
}
例子1:
public struct PersonStruct
{
public char sex;
public int age;
public float money;
}
例子2:
public struct PersonStruct
{
public char sex;
public int age;
public float score;
public string name;
} //定义结构体
public static void Main(string[] args)
{
int a;
PersonStruct per1;
per1.name = "zhangsan";
per1.sex='男';
Console.WriteLine("姓名:{0},性别:{1}", per1.name, per1.sex);
}
- 访问修饰符:所有类型和类型成员都具有访问级别,用来控制是否可以在当前程序集的其它代码或者其他程序集中使用它们
- public:同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员,访问不受限制;
- private:只有同一类或结构中的代码可以访问该类型或成员,访问仅限于包含类型;
- protected:只有同一类或结构或者此类的派生类中的代码才可以访问的类型或成员;
- internal:同一程序集中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以。
- 注意:直接在命名空间中命名的类和结构体(即没有嵌套在其他类和结构体中),访问修饰符只能是public和internal,如果没有指定修饰符,默认为internal。
引用类型
-
C#中有两种类型:引用类型和值类型。
-
引用类型的变量存储对其数据(对象)的引用,而值类型的变凉直接包含其数据。(图3)
-
装箱和拆箱:
- 装箱是将值类型转换为引用类型
- 拆箱是将引用类型转换为值类型
- 利用装箱拆箱功能,可通过允许值类型的任意类型与Object类型的值相互转换,将值类型与引用类型链接起来。
-
装箱操作:
int vel=10;//值类型
object obj=vel;//把数值类型转换为引用类型
Console.WriteLine("obj=" + obj);
- 拆箱操作
int val=100;
object o=val;
int d=(int)o;
string
- string的特殊性:string类型表示一个字符序列(零个或更多Unicode字符)。string是.Net Framework中String的别名。尽管string是引用类型,但定义相等运算符(== 和!=)是为了比较string对象的值,这使得对字符串相等性的测试更为直观。
- +在string中,是连接两个字符串用的,不是算术运算符。
- 字符串访问:
string str = "zhangxiaohan";
char c = str[4];
Console.WriteLine(c);
- 若要测试字符串是否为空,可以用
bool d = string.IsNullOrEmpty(str);
Console.WriteLine(d);
- 字符串方法(图4、5)
- 测试字符串是否包含所指定的字符串
bool t = str.Contains("zhang");
Console.WriteLine(t);
- 测试所包含字符串的类型:
int n = str.IndexOf("z");
Console.WriteLine(n);
打印出来n为0
- split:图6
string str2 = "zhang xiao han";
char[] c1 = { ' ' };
string[] strArray = str2.Split(c1);
foreach (string stri in strArray)
{
Console.WriteLine(stri);
}
- StringBuilder:string对象是不可改变的,每次是永System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该对象分配新的空间,如果需要多次修改,String的开销就十分大,于是有了System.Text.StringBuilder可以大大提升效率。
- 声明:
StringBuilder s1=new StringBuilder("new")
; - shiyong1StringBuilder.Append来添加信息:
s1.Append("string");