类
2016-03-03 23:15
357 查看
1.默认构造函数
不接受参数,除了把对象分配到内存中,默认构造函数确保所有字段数据都设置为正确的默认值default(Type)。
一旦定义了自定义的构造函数,默认构造函数就自动从类中移除,并且不再有效。
2.this关键字进行串联构造函数调用
class TestA
{
private int x;
private int y;
private int z;
public TestA()
{ }
public TestA(int x)
: this(x, 0, 0)
{ }
public TestA(int x, int y, int z)
{
this.x = x;
this.y = y;
this.z = z;
}
}
3.可选参数构造函数
class TestA
{
private int x;
private int y;
private int z;
public TestA(int x =0, int y=0, int z=0)
{
this.x = x;
this.y = y;
this.z = z;
}
}
调用:
...
TestA a = new TestA(y:2);
4.static关键字
static 静态数据:只分配一次,并且在所有的对象之间共享。
静态方法:静态方法中不能访问非静态成员(属性、方法等)
5.静态构造函数
一个类只可以有一个静态构造函数
静态构造函数不允许访问修饰符,并且不能接受任何参数
无论创建了多少对象,静态构造函数只执行一次
运行库创建实例或者调用者首次访问静态成员之前,运行库会调用静态构造函数
静态构造函数的执行先于任何实例级别的构造函数
6.嵌套类型
类的修饰符只能有:public 和internal
类型成员或者嵌套类型:private 、protected、protected internal
7.属性
class MyClass
{
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
//只读属性
private string name;
public string Name
{
get { return name; }
}
//只写属性
private string son;
public string Son
{
set { son = value; }
}
//静态属性
private static int count;
public static int Count
{
get { return count; }
set { count = value; }
}
//自动属性,不允许构建只读或者只写的自动属性
public int Id { get; set; }
}
8.对象初始化语法
大括号内部用逗号分隔的指定值列表,在后台调用的是默认的构造函数,然后在给指定的属性赋值。
Point p = new Point { X = 30, Y = 40 };
//
Rect rect = new Rect
{
Leftp = new Point { X = 10, Y = 10 },
Rightp = new Point { X = 100, Y = 100 }
};
9.常量
定义常量是必须指定初始值,常量字段为隐式静态的(访问MyClass.desc),常量的值必须在编译时提供。
class MyClass
{
public const string desc = "hello,CSharp!";
}
10.只读字段
和常量相似,只读字段在赋值后不能改变,和常量不同的是:赋给只读字段的值可以在运行时决定,一次在构造函数作用域中进行赋值是合法的(其他地方不行)。
只读字段不是隐式静态的,需要通过实例进行访问。
class MyClass
{
public readonly double PI;
public MyClass(double pi)
{
PI = pi;
}
}
11.静态只读字段
class MyClass
{
public static readonly double PI = 3.14;
}
如果直到运行时候才知道静态只读字段的值,必须使用静态构造函数
class MyClass
{
public static readonly double PI;
static MyClass()
{
PI = ReadFromConfig();
}
}
12.分部类
不接受参数,除了把对象分配到内存中,默认构造函数确保所有字段数据都设置为正确的默认值default(Type)。
一旦定义了自定义的构造函数,默认构造函数就自动从类中移除,并且不再有效。
2.this关键字进行串联构造函数调用
class TestA
{
private int x;
private int y;
private int z;
public TestA()
{ }
public TestA(int x)
: this(x, 0, 0)
{ }
public TestA(int x, int y, int z)
{
this.x = x;
this.y = y;
this.z = z;
}
}
3.可选参数构造函数
class TestA
{
private int x;
private int y;
private int z;
public TestA(int x =0, int y=0, int z=0)
{
this.x = x;
this.y = y;
this.z = z;
}
}
调用:
...
TestA a = new TestA(y:2);
4.static关键字
static 静态数据:只分配一次,并且在所有的对象之间共享。
静态方法:静态方法中不能访问非静态成员(属性、方法等)
5.静态构造函数
一个类只可以有一个静态构造函数
静态构造函数不允许访问修饰符,并且不能接受任何参数
无论创建了多少对象,静态构造函数只执行一次
运行库创建实例或者调用者首次访问静态成员之前,运行库会调用静态构造函数
静态构造函数的执行先于任何实例级别的构造函数
6.嵌套类型
类的修饰符只能有:public 和internal
类型成员或者嵌套类型:private 、protected、protected internal
7.属性
class MyClass
{
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
//只读属性
private string name;
public string Name
{
get { return name; }
}
//只写属性
private string son;
public string Son
{
set { son = value; }
}
//静态属性
private static int count;
public static int Count
{
get { return count; }
set { count = value; }
}
//自动属性,不允许构建只读或者只写的自动属性
public int Id { get; set; }
}
8.对象初始化语法
大括号内部用逗号分隔的指定值列表,在后台调用的是默认的构造函数,然后在给指定的属性赋值。
Point p = new Point { X = 30, Y = 40 };
//
Rect rect = new Rect
{
Leftp = new Point { X = 10, Y = 10 },
Rightp = new Point { X = 100, Y = 100 }
};
9.常量
定义常量是必须指定初始值,常量字段为隐式静态的(访问MyClass.desc),常量的值必须在编译时提供。
class MyClass
{
public const string desc = "hello,CSharp!";
}
10.只读字段
和常量相似,只读字段在赋值后不能改变,和常量不同的是:赋给只读字段的值可以在运行时决定,一次在构造函数作用域中进行赋值是合法的(其他地方不行)。
只读字段不是隐式静态的,需要通过实例进行访问。
class MyClass
{
public readonly double PI;
public MyClass(double pi)
{
PI = pi;
}
}
11.静态只读字段
class MyClass
{
public static readonly double PI = 3.14;
}
如果直到运行时候才知道静态只读字段的值,必须使用静态构造函数
class MyClass
{
public static readonly double PI;
static MyClass()
{
PI = ReadFromConfig();
}
}
12.分部类
相关文章推荐
- 自建网页服务器基础
- eclipse创建maven web项目
- c、OC、C++的三种预处理功能
- 求最大公约数——欧几里得碾转相除法
- CF #632A(A. Grandma Laura and Apples,)数学题
- 嵌入式C语言常见面试题分析
- 懒汉式与饿汉式
- jstat
- “火星探路者”与VxWorks优先级反转问题
- Linux下/proc目录简介
- 关于intellij14的web项目导入lib丢失以及上传资源图片等无法访问的问题
- 仿支付宝登录页面
- java001-Helloworld
- Git使用(2)
- pod install -bash: pod: command not found的解决办法
- myeclipse设置jvm参数的三种方式
- JVM原理和性能调优
- Android 代码中文字在手机上显示乱码问题解决方法
- Git之 基本常用命令
- demo06