Ref 按地址传递,引用传递;即可以往外返值,也可以对内传值。

Out是用于传出值,

Ref是双向的,即可以传入,也可以传出。

在传参过程中,如果参数有out,那么改变方法中参数的值,调用者方法中变量的值也会相应的改变。

面向对象的概念

万物皆对象,想方法用程序代码来描述

对象是实实在在的一个物体

属性

对象具有各种特征

每个对象的每个属性都有特定的值

方法

行为、动作、执行的操作

类是模子,确定对象将会拥有的特征(属性)和行为(方法)。

类是对象的类型。

类和对象的区别

类是抽象的概念,仅仅是模板。

对象是一个你能够看得到,摸得着的具体实体。

对象可以叫做类得实例。

类不占内存,对象才占内存。

类的定义

[访问修饰符]class 类名

{

成员-》类的属性和方法

}

.cs是类的文件

一般情况下,类名与.cs类文件名相同。

在我们自己写的类中,我们在写方法时,先不加static

类的实例化

用关键字new

在Main()方法中,

类名 实例名= new 类名();实例名或称对象名

访问类的属性

累的属性也就是一个变量。

实例名.属性

访问类的方法

实例名.方法名()

注意:

只要是没有加static的方法或者是属性,都必须先实例化,再通过实例名.方法名()或是实例名.属性类访问。

加static的方法或者是属性,可以直接通过类名.方法名()或类名.属性类访问。

//仅仅是定义了一个类而已,我们定义了一个叫person的类,这个类是人这个对象的模板

//在这个模板中规定了人类对象都应该有姓名 性别 年龄和SayHello方法

class Person

{

public string name;

public char sex;

public int age;

public void SayHello()

{

Console.WriteLine("我是{},我是{}生,我今年{}岁了",name ,sex ,age);

}

}

属性

public int Age  //定义一个变量,在这个变量中含有get/set两个方法,我们就叫做属性

{

get

{

return age;

}

set

{

//这里有个关键字value,value中就是存储用户赋的那个值

if(value >=0)

{

age = value;

}

}

}

允许外部访问的变量一定要声明为属性。

属性有三种:

1) 读写属性

具有get/set方法的属性

2) 只读属性

只有get方法,只能读取

3) 只写属性

只有set方法,只能写入

注意:当我们实例化时,系统会自动对这个类的属性进行初始化。

数字类型初始化为0/0.0

String 类型初始化为null

Char 类型初始化为\0

构造方法

使用构造方法有什么好处呢?

1) 对多个属性进行赋值时,不需要重复实例名。

2) 可以保证用户在new一个对象时,必须对某个属性进行赋值。

3) 在创建对象时,对只读属性进行初始化。

当我们定义一个类之后,如果我们没有写构造方法,那么系统会自动给我们加上一个默认的没有参数的构造函数,在这个构造方法中,什么也不做,我们什么也看不到。

我们可以定义一个构造方法:

构造方法是一个特殊的方法,它的名称与类名相同,并且没有返回值,连Void都可以省略不写。但是当我们手写一个构造函数后,系统默认添加的那个无参数的构造函数就不会再给我们添加了。

如果要实例化类,必须得调用构造函数。

构造方法的重载:

与方法的重载类似。

认识类图(通用类图)

类名 student

-age:int   -私有private

-name:string

+Name:string +Public

+SayHi(): void 方法

在c#中, 可以直接生成类图

析构函数(C#不用,C#中有专门的垃圾回收器)

~Student();

在C++中的作用是对内存进行清理

于2012-03-06整理

C# 基础(4)的更多相关文章

  1. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  2. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. Golang, 以17个简短代码片段,切底弄懂 channel 基础

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...

  5. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  6. HTTPS 互联网世界的安全基础

    近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...

  7. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  8. .NetCore MVC中的路由(1)路由配置基础

    .NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...

  9. .NET基础拾遗(5)多线程开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

  10. .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]

    方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...

随机推荐

  1. Vs程序自动获取windows7/vista系统管理员权限

    1.在工程中加入MANIFEST资源(C#) 打开VS2005.VS2008.VS2010工程,查看在Properties下是否有app.manifest这个文件:如没有,按如下方式创建:鼠标右击工程 ...

  2. JavaScript中Math--random()/floor()/round()/ceil()

    Math.random():返回0-1之间的任意数,不包括0和1: Math.floor(num):返回小于等于num的整数,相当于四舍五入的四舍,不五入:例子:Math.floor(1.0);Mat ...

  3. win7以管理员身份运行bat提示系统找不到指定的路径。

    windows7“以管理员身份运行”bat提示“系统找不到指定的路径.” 使用批处理安装服务,直接双击运行没有权限,右键“以管理员身份运行”却提示“系统找不到指定的路径.”,反复查看路径是正确的. 打 ...

  4. ini 文件

    INI文件是一个无固定标准格式的配置文件.它以简单的文字与简单的结构组成,常常使用在视窗操作系统,或是其他操作系统上,许多程序也会采用INI文件做为设置程序之用.视窗操作系统后来以注册表的形式替换掉I ...

  5. eclipse配置javacv0.8

    之前配置了一次javacv,但是忘了做笔记,这次又重新查了一遍资料,很多东西模棱两可,浪费了很多时间,这次配置成功,总结如下,希望能帮到大家. 如不明确,可以联系我.   javacv下载 https ...

  6. CSS+HTML网页设计与布局(学习笔记1)

    1.在宽度未知时,使div块居中,可以添加以下属性: display:table;margin:0 auto;

  7. 错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法

    错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法 java.lang.UnsupportedClassVersionError: org/ap ...

  8. delegate事件绑定

    为了代码的健壮性,绑定事件之前先解绑再进行绑定. var _$div = $("#id");_$div.undelegate("click mouseover mouse ...

  9. VC++绘图时,利用双缓冲解决屏幕闪烁 转载

    最近做中国象棋,绘制界面时遇到些问题,绘图过程中屏幕闪烁,估计都会想到利用双缓冲来解决问题,但查了下网上双缓冲的资料,发现基本是MFC的,转化为VC++后,大概代码如下: void DrawBmp(H ...

  10. LZW压缩算法

    转载自http://www.cnblogs.com/jillzhang/archive/2006/11/06/551298.html 记录此处仅自己供学习之用 lzw解压缩算法: 用单个字符初始化字符 ...