关键字
标识符命名规则
- 标识符中只能出现英文字母、数字、下划线,以及@这几种字符,不能出现诸如"空格,!"等这些字符;
- 标识符名称只能以下划线,字母以及@打头,不可以用数字作为标识符名称的开头;
- 不可以使用C#语言用作特殊用途的关键字来作为标识符的名称,除非在关键字前面加上@,比如“if”是一个非法的标识符名称,而“@if”就是一个合法的标识符名称;
- 标识符名称区分大小写,且长度不能超过255个字符的长度;
C#的数据类型
- 值类型:任何变量都需要存储,而变量的存储分为两种方式,引用语义,和值语义,引用语义存放的只是指向这个变量的一个指针,而并不实际存放具体的数值,采用引用语义存放的变量其在内存空间中所占据的大小都是一样的,而值语义存储的就是真正的数值,而不是指向该数值的地址,所以采用值语义所存储的变量其在内存空间中所占据的大小是不一样的,典型的如C语言的变量采用的就是值语义的存储方式,而python采用的就是引用语义的存储方式;C#从C/C++继承而来,其值类型的变量就是采用的值引用的存储方式,所以类型不同的值类型变量在内存中所占据的大小也不同,比如int占据4个字节,long long int 占据8个字节等;C#中的值类型变量有三种:
第一种是:基本类型变量,如int,long,char等;
第二种是结构体类型;
第三种是枚举类型;
以下是一个简单的值引用的例子
using System;
namespace TypeValueApplication
{
class TypeValue
{
static void Main(string[] arg)
{
int a = 10;
Console.WriteLine("a是一个采用值语义来存储的变量,其值为:{0}", a);
Console.ReadKey(); //此语句用于在程序结果输出之后等待一个字符键入,防止运行窗口闪退;
}
}
}
Console.WriteLine("a是一个采用值语义来存储的变量,其值为:{0}", a);该语句在输出是采用了格式化输出,C#的格式化输出采用的格式控制符是“{}”,在花括号中写明需要在此处输出的变量的位置,即第一个字符串结束之后,出现的变量的位置就是从左往右依次从0开始给这些变量编号;
C#中的结构体类型属于值类型,与C语言的结构体类型有很多相似之处,但也有一些略微的差别,如下是一个简单的声明结构体类型变量的例子
//这是一个定义结构体类型的例子,在C#语言中结构体类型的变量属于值类型的变量,C#中的结构体变量与C语言中的结构体变量稍微有一些不同,以下将会列出一些两者的区别
using System;
//如下定义了一个结构体类型
struct infor_id
{
public string name;
public string gender;
public string id_number;
public string birthday;
public void out_infor()
{
Console.WriteLine("学号:{0}\n姓名:{1}\n性别:{2}\n出生日期:{3}\n", id_number, name, gender, birthday);
}
}
namespace StructExampleApplication
{
class StructExample
{
static void Main(string[] args)
{
infor_id a;
a.name = "张三";
a.gender = "女";
a.id_number = "1001";
a.birthday = "2002-10-9";
a.out_infor();
}
}
}
对于C#中的结构体而言,结构体类型中的成员默认的访问控制方式是私有的,关于C#中的默认访问控制权限的问题可以去看看这个博主的文章,写的很详细,博客链接:http://t.csdn.cn/Pj1xh;
除此之外在C语言中当我们定义一个结构体类型struct mystruct{ 结构体 };时若我们想要用该结构体类型去定义一个变量时,方法是struct mystruct a;而在C#中定义名字相同的结构体类型,用该结构体类型去定义其它类型的变量,方法是 mystruct a;此时不需要带上定义结构体类型的关键字struct;
还有就是枚举类型,C#中的枚举类型和C语言中的枚举类型是相似的,都是为了给一组整数值取一个名字使整数的含义更加的清晰;
2.引用类型:
C#中的引用类型有:
- 对象类型:对象(object)类型是所有其它类型的基类,任何其它类型都是继承自对象类型,因此,可以给对象类型赋予其它任何类型的值
- 类类型:类是具有相同属性和行为一系列对象的抽象;C#中既有预定义的类(string,Array)供用户使用。也允许用户自己定义类;
- 字符串(string)类型:C#中将字符串视为对象,字符串类型变量采取的是引用语义的存储方式,即存储的是字符串对象的内存地址而非字符串对象本身,字符串(string)类型的基类是.NET基类System.String。System.String是一个功能强大且用途广泛的基类,其封装了字符串的常用操作,如查找,比较,替换,求子串,求串长,大小写转换等。
- 数组(Array)类型:数组是一组类型相同的有序数据,数组按照数组名,数组元素的类型,以及数组的维数来描述,C#中的数组是System.Array类的对象;