C#类型所含的数据类型
与其他大部分语言类似,C#拥有int、bool等等值类型数据以及用户可以自定的struct(结构体)类型,
他们都是继承于System.ValueType这个类的,而System.ValueType又继承于System.Object这个类。
Int整形
int在C#中其实做了一些处理,他并不是直接代表其他语言里的int,
在C#中,int的真实名称其实为System.Int32,
类似的,bool的真实名称其实为System.Boolean等等。
需要注意的是,在C#当中,int的默认构造就是0
所以直接调用int的默认构造函数与赋值0效果是一样的。
using System;
namespace u3dTest1
{
class Program
{
static void Main(string[] args)
{
int intValue = 0;
int intValue2 = new int();
//上面两种写法其实是等价的,在c#当中int的默认构造就是0
//第二句话就是调用了int的默认构造函数,也就等于第一句话
//vs的快捷键f12就可以跳到定义区,里面有详细构造,其他的类型也一样
}
}
}
intValue.CompareTo
intValue.Equals
intValue.GetHashCode...
这些都是int一些可视的接口与方法
Struct结构体
strcut的目的就是用来打包封装一个比较小的数据集,
在strcut里也可以像class一样定义方法、事件等等,它基本可以做到class能做到的大部分事。
using System;
namespace u3dTest1
{
class Program
{
static void Main(string[] args)
{
Person person = new Person();//调用下面定义的结构体
person.age = 10;
Console.WriteLine(person.age);
/*需要注意的是,虽然age在结构体里定义的是一个int类型,但通过WriteLine
打印出来的将被转换成string类型输出在控制台上*/
Console.ReadLine();//用来暂停,显示结果
}
struct Person
{
public int age;
public string name;
public string fname;
public string lastName;
}
}
}
在定义成员属性时也要用到访问权限修饰符,跟java大同小异
public 公开的可视的
private 私有的,只有同一个类里可以访问
internal 在同一个包内(同一个命名空间内),可以访问
protected 继承于它的类也可以访问它
同一个类 | 同一个包 | 同一个包的子类 | 不同包的非子类 | |
public | ✔ | ✔ | ✔ | ✔ |
protected | ✔ | ✔ | ✔ | ✖ |
internal | ✔ | ✔ | ✖ | ✖ |
private | ✔ | ✖ | ✖ | ✖ |
enum枚举类型
枚举类型的主要功能就是限定变量的可能性,
比如现在枚举了days天,那么它只有可能是周一到周日,不可能是“一月”
枚举默认的基础类型是int,且默认从0开始,类似于下标
using System;
namespace u3dTest1
{
//如果像现在枚举的是string类型,在输出时强转成int,就会输出对应的下标
enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
//当然,你也可以在定义的时候确定它的基础类型,比如byte字节型和short短整形等等所有非char的类型
enum Months : byte { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec };
class Program
{
static void Main(string[] args)
{
//调用枚举类型可以用两种方式
/*1.*/
Console.WriteLine(Days.Monday);//直接调用之前定义的枚举类型Days
/*2.*/
var day = Days.Thursday;/*var的作用就是无论你现在声明或者赋予这个变量什么类型的值都可以,都视为可行,
只有到需要真正确定它是什么类型时才会去自动设定类型*/
Console.WriteLine(day);//先把Days.Thursday的值赋予变量day,再打印day
Console.WriteLine((int)Days.Monday);//强转int
Console.ReadLine();//用来暂停,显示结果
}
}
}