码迷,mamicode.com
首页 > Windows程序 > 详细

c# 面向对像编程。类,

时间:2018-11-03 00:00:36      阅读:296      评论:0      收藏:0      [点我收藏+]

标签:类型   可见   nbsp   名称   执行   spec   对象   标识   构造函数   

一、类

定义类使用class关键字。

<access specifier> class  class_name 
{
    // member variables 成员变量
    <access specifier> <data type> variable1;
    <access specifier> <data type> variable2;
    ...
    <access specifier> <data type> variableN;
    // member methods 成员方法
    <access specifier> <return type> method1(parameter_list) 
    {
        // method body 
    }
    <access specifier> <return type> method2(parameter_list) 
    {
        // method body 
    }
    ...
    <access specifier> <return type> methodN(parameter_list) 
    {
        // method body 
    }
}

请注意:

  • 访问标识符 <access specifier> 指定了对类及其成员的访问规则。如果没有指定,则使用默认的访问标识符。类的默认访问标识符是 internal,成员的默认访问标识符是 private
  • 数据类型 <data type> 指定了变量的类型,返回类型 <return type> 指定了返回的方法返回的数据类型。
  • 如果要访问类的成员,你要使用点(.)运算符。
  • 点运算符链接了对象的名称和成员的名称。

 

类的内部定义不同的成员,这些成员包括

1)字段:内部定义的一种变量 

2)属性:用于描述对象的特征

通常属性带有get和set访问器,get访问器用来获取属性的值 ,set访问器则用来设置属性的值 。如果 希望让属性只读,即只能获取其值而不允许对其进行赋值,直接去掉set访问器即可,仅保留get访问器。

如果属性不需要特殊验证可以简化写成

publie string Name{get;set;}

不简化

publie string Name
{
    get{return this.name;}
    set{this.name=value;}
}

  

设置默认值 

publie string Name{get;set;}=700

只读属性

1)publie string Name{get;}

2)//还可以使用类似Lambda表达式来声明

publie int MaxTaskNum=>500;
当使用”=>“操作符来声明只读属性时,不需要写get语句 ,也不需要也return关键字,”=>“后面直接 写上返回值 即可。

 

字段是真正存储数据值 的变量,而属性只是一个对外公开的窗口,数据通过属性来传递。当获取属性的值 时,通过retrun关键字直接把字段中存放的值 返回。当要设置属性的值 时,调用set访问器把外部传进来的数据存放到value中,再以value作为纽带把数据赋值给字段。

 3)方法:对象的行为

带有参数的方法

int Add(int a ,int b )
{
    return a+b;
}

不按顺序参数调用方法

Add(b:5,a:6

定义可选参数,就是在调用方法时,可以忽略的参数,就是可选 参数要赋值默认值。如下P1是可选参数,P2由于已赋了默认值,就成了可选参数

void DoWor(string p1,string p2="abc")
{
}

这要调用

DoWork("123");

因为P2是可选参数,这样是对的,但如下就是不对的,p1是可选参数,如果仍然采取上面的调用方法,就会提示错误 ,由此可见可选 参数要放在参数列表最后一列,因为放在前面 无法一一对应。

void DoWor(string p1="abc",string p2)
{
}

也可以Lamebda表达式的形式来声明

public string PickName()=>"jack";//PickName方法没有参数,返回一个字符串实例 。


 public string PickName(int a ,int b)=>a+b;//带参数的方法

 

写一个例子

用属性来封装name字段,是为了安全性。不让直接该变量字段,也可以进行判断一些规则,不让值 随便修改
class Program
{
    static void Main(string[] args)
    {
        Person ps =new Person();//类在使用的时候,必须使用new实例化。
        ps.Name="小红";
        ps.Age=20;
     ps.Play();//调用方法
    console.Read();//让代码执行到这边可以停 } }
public class person {
  // 字段
string name;//字段默认为private,可以不写private,代表只能在类里面使用 public string Name;//公共的字段,可以在类外面使用该字段
  //属性
public string Name { get {return name;}//返回name的值 set { name=value;}//给name值 赋值 } int age public int age { get {return age;} set { if (value<0) { throw new ArgumentException(“属性值不能小于0”);//抛出异常 } age=value; } }

//方法
  public void play()
  {
    Console.WriteLine("一起去玩");
  } }

 

 

4)事件:在特定条件下触发的行为

5)构造器,构造函数,构造方法。它是一种特殊的方法,在创建对象实例时调用,用来进行一些初始化工作。

  在类被实例化的时候 (创建类的对象实例时)调用,它也是类的成员,具有以下特点:

  • 构造函数的名称必须与类名相同
  • 构造函数没有返回值 
  • 默认构造函数没有参数,但也可以定义参数。

即使开发人员不为类编写构造函数,它默认就有一个不带参数的构造函数,

如果 希望在类型初始化的过程中加入自己的处理的代码,或者使用带参数的构造函数,就有必要息来定义构造函数

 

c# 面向对像编程。类,

标签:类型   可见   nbsp   名称   执行   spec   对象   标识   构造函数   

原文地址:https://www.cnblogs.com/michellexiaoqi/p/9898471.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!