一、C#值的类型
主要分为两种类型:
(1)值类型:直接存储在内存的栈上面
(2)引用类型:在内存的栈上面衍生出一个引用,在内存的堆上面才会存储具体的值
(3)指针类型(仅在不安全项目中使用)
值类型:
(1)内建类型,如int、bool等
(2)用户可自定义的struct类型及枚举enum类型
所有的值类型均继承于System.ValueType,而前面的类继承于System.Object,该类为C#语言的基类,所有的数据类型以及类均继承于System.Object
例:int类型正式的名字为System.Int32,二者互相等价,相同的还有bool和System.Boolean
ps1:注释的方法与C/C++相同 //与/**/,但是不同的有///三斜杠写法,一般用来注释方法
ps2:命名规则:变量以小写开头,而方法的第一个字母需要大写
ps3:F12可以跳转至定义区,查看具体的东西
访问修饰符:
C#中访问修饰符的用法与C/C++大致相同
(1)public
(2)private
(3)internal :访问仅限于当前程序集(.exe/.dll等)即只能在同一程序集中的文件中才能访问,并为提及到与命名空间的关系
(4)protected
枚举类型enum
例如
enum Days {Monday,Tuesday,Wenesday,Thursday,Friday,Saturday,Sunday}//这里结尾不用写;
这里可以通过 Days.Monday来调用,主要是用来限制某些变量的可能性
ps4:var不管声明任何类型的变量,都可以用var来代替,这样在开始时不用管是什么类型,在具体使用时会C#会自动转化为响应的类型(RUA!)
C#中的Class
以下为例子
class Person//class的默认访问修饰符为internal
{
//class内的默认访问修饰符为private
int age;//成员变量,或者称字段
public int Age
{//属性的创建
get;//写了get后便可以直接通过实例化对象调用Age的值,对象名.Age
//当然这里可以写get{}然后向其中写函数体
set;//写了set后便可以直接通过=修改Age的值,对象名.Age=10
//这其中可以写一个value来表示该变量的值
}
public Person(int myAge)
{
age=myAge;
}
public int GetAge()
{
return age;
}
public static int GetFive()
{//静态的方法和变量只能通过类来调用,不能通过实例化的对象来调用
return 5;
}
}
C#中的Interface
只能包含方法、索引、属性和事件
以下为例子
interface Isuper
{//interface的名字最好以大写I开头,方便辨识
int GetSuper();//在此处不实现,在类中实现
}
C#中的封装和public、private
public:所有范围只要引用了这个方法或是class都能去访问,目的是让外部去调用
private:在class外部都不能访问,通常是为了保证程序的安全性,常用来使得外部无法访问机修改内部数据
internal:只有在同一程序集的文件中,内部类型或成员才可访问
protected:受保护成员在其所在的类中可由派生类实例访问
internal protected:访问仅限于当前程序集或从包含类派生的类型
ps:c# 访问修饰符 internal 和protected internal的区别
internal修饰的b在同一个项目中哪里都可以访问,而在另外一个项目中就不能访问,说明“同一程序集”指的是同一个项目;对于protected internal修饰的a在同一项目中哪里都可以访问,而在其它项目中只有在派生类可以访问,所以protected internal 修饰的成员变量是同一程序集或者派生类可以访问,也就是protected跟internal的并集,而不是交集。