1.可访问性修饰符:
Public:对任何类和成员都公开,无限制访问
Protected:仅仅对该类及该类的派生类中可公开
Private:仅对该类公开
Internal:只能在包含该类的程序集中访问该类
protected internal:只能在该类,派生类或者包含该类的程序集中访问
默认可访问修饰符:
namespace--默认public,不允许定义public
类--默认为internal
类成员--默认为private
interface,enum默认为internal
2.Static关键字
静态的,不需要创建类的实例,直接可以通过类名来访问
一般修饰:
类的成员(包括类的方法)
static 成员
static 方法
static 构造函数 如果static class
3.Const关键字
特点: 1.必须在定义的时候赋值
2.一旦写入代码时赋过值,以后运行时不允许再修改
3.隐藏着有一个Static
4.Const修饰值类型====可以
5.定义一个引用类型 String->引用类型 ====可以 比较特殊 可直接赋值如 public const string connection="server";
其他引用类型===必须赋初始值NUll public const Student s=NULl;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConstTest
{
public class 圆
{
private double _半径;
public const double PI=3.14159;
public double 半径
{
get { return _半径; }
set { _半径 = value; }
}
public double 面积
{
get
{
return 圆.PI * Math.Pow(this._半径, 2);
}
}
public 圆(double 半径)
{
this._半径 = 半径;
}
}
public class Student
{
public int Age;
}
class Program
{
static void Main(string[] args)
{
//圆 y = new 圆(10);
//Console.WriteLine(y.面积);
string a = "abc";
string b = a;
b = "hello";
Console.WriteLine(a);
Console.WriteLine(b);//输出abc hello
Student c = new Student();
c.Age = 10;
Student d = c;
d.Age = 20;
Console.WriteLine(c.Age);
Console.WriteLine(d.Age);//输出20 20
}
}
}
4.ReadOnly关键字
物点:
1.可以是任何类型
2.赋值
在定义时赋值
只能在构造函数中赋值
3.不能修饰局部变量
4.不带隐藏的Static
5.不能强制要求必须初始化
总结:运行时只读
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ReadOnly
{
public class Car
{
public readonly int _CarSpeed = 0;
public Car(int speed)
{
this._CarSpeed = speed;
}
}
public class Boy
{
public Girl babywife;
public Boy(Girl wife)
{
this.babywife = wife;
}
}
public class Girl
{
}
class Program
{
static void Main(string[] args)
{
Car c = new Car(100);
Console.WriteLine(c._CarSpeed);
Girl girl = new Girl();
Boy boy = new Boy(girl);
Girl girl2 = new Girl();
boy.babywife = girl2;
Console.WriteLine(object.ReferenceEquals(girl,boy.babywife));
}
}
}
5.this关键字
this关键代表当前这个实例。
this关键字使用只有两个领域:
在类内部访问自己类的成员:成员变量,函数方法,属性,事件
调用自己类的另一个构造函数。
好处:只需访问自己的成员时,使用this,过滤掉不相关的提示。
不仅可以访问自己的成员,还可以访问父类的成员。this指向当前这个实例,所以只能访问实例成员,不能访问静态成员。