C#学习日志 day 4 ------ 类相关---this指针以及相关关键字

c#中的类和java中的类没什么太大区别。但是c#有些特有的关键字以及属性使得c#具有一些特性。

  首先就是this关键字,this在c++和java中都有,可以表示当前对象,以及变量所属对象等。例如

public void somemethod(int hour1){
    this.hour = hour1;
}

或者otherobject.bar(this) 把当前对象传给otherobject

还有就是指示变量属于哪个对象。
this.z = 5;

等等。这里不作赘述。

  c#中还有using关键字,

class t{
  using(font thefont = new font("a",10.0f))
{
    //use thefont
}//compiler will call dispose on thefont

thefont在using中用完后会被直接析构,安全稳定。

同时要避免下面这种用法。

font thefont = new font()
using(thefont){
//use thefont
}//dispose

这样thefont也会被析构,所以外界不能再用thefont了。所以会存在风险。

  在c#中,函数的变量传递默认是值传递,所以函数内部对变量的修改若没有返回的话是不会对外部产生影响的。

所以这里就要提到一个ref关键字。ref会使变量按引用传递。下面是例子:

int a = 0;
some(ref a){
    a = 234;
}
此时在外部a就变成了234。

而这里还有out关键字,out的作用和ref没有太大区别,只是out a

可以不用对a进行初始化,但是需要声明。

  这里还有一个简单的例子区分函数的重载和多态

重载

void myM(int p1);
void myM(int p1,int p2);

返回值不同不是重载
polymorphism多态

void myM(int a);
void myM(string a);

  c#还有一个重要的特性就是它具有属性,即properties

属性可以很好的连接用户和开发者。这里有一个简单的示例

number就是一个属性,set和get可以设置权限,使得外部只能进行限定操作,

而在内部可以对number进行修改。这里有效的连接了用户和开发者。

还有readonly关键字

public static int a;可读可写。
----
public static readonly int a;只能读不能写。

还有inheritance & polymorphism
override 基类要public virtual void 才能显示出多态特性

还有隔断基类方法

public new virtual void Sort()下面是示例

运行之后是 可以看出,编译时,程序是从A开始寻找所要的类,

在C中有public new virtual void,所以被隔断,直接停在B。

当然,c#支持运算符的重载,但是运算符重载要遵循实用原则,否则会增加写程序的难度。

以上就是我对c#中类方面关键字的总结。希望对大家有帮助。

时间: 2024-11-12 23:03:04

C#学习日志 day 4 ------ 类相关---this指针以及相关关键字的相关文章

Cocos2d-x 3.1.1 学习日志3--C++ 初始化类的常量数据成员、静态数据成员、常量静态数据成员

有关const成员.static成员.const static成员的初始化: 1.const成员:只能在构造函数后的初始化列表中初始化 2.static成员:初始化在类外,且不加static修饰 3.const static成员:类只有唯一一份拷贝,且数值不能改变.因此,可以在类中声明处初始化,也可以像static在类外初始化 #include <iostream> using std::cout; using std::endl; class base { public: base(int

ibernate学习笔记5---实体类或属性名与数据库关键字冲突、hql命名参数、hql实现通用分页

一.实体类或属性名与数据库关键字冲突问题1.实体类名与数据库中的关键字冲突比如:实体表User与oracle中的系统表冲突解决方式1:在xml中添加table属性,指定表名,使其不与name默认相等 [html] view plaincopyprint? <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hiber

Cocos2d-x 3.1.1 学习日志8--2分钟让你了解cocos2d-x3.1.1 文本类

其实常用的文本就那三个,LabelTTF,LabelBMF和LabelAtlas.而它们的用法也极其相似,所以只要你会举一反三,相信你很快就可以掌握了. <span style="font-family:SimHei;font-size:18px;">bool MyScene::init() { Size size = Director::getInstance()->getWinSize();//屏幕的大小 LabelTTF *lable1 = LabelTTF::

Cocos2d-x 3.1.1 学习日志2--error:只有静态常量整型数据成员才可以在类中初始化

今天遇到比较低端的一个问题,就是成员的初始化问题,编译器也无法验证,不同的编译器有些能过有些不能过,我也不知道为什么,总是我们以vs为准吧,以为我们用的环境就是它,话不多说,解决方案如下: 在类中    static const double PI=3.1416; error:只有静态常量整型数据成员才可以在类中初始化 常整型静态数据成员可以在类中直接初始化,而常实型静态数据成员不可以 class circle { int a; // 普通变量,不能在类中初始化 static int b; //

Cocos2d-x 3.1.1 学习日志7--7分钟让你了解cocos2d-x3.1.1 Sprite精灵类

精灵(Sprite)是游戏里面的角色,比如敌人,游戏里面运动的物体等等,所以精灵是游戏里面一个非常常见的概念,几乎无处不在.在Cocos2D-x里面精灵是用Sprite类来进行表示的,它可以用一张图片或者一张图片的一块矩形部分来定义. 在自己设计的MyScene类中,我写了六种常用精灵的出现方式.分别是sp1,sp2,sp3,sp4,sp5,sp6.上代码: bool MyScene::init() { Size size = Director::getInstance()->getWinSiz

黑马程序员---Objective-C基础学习---类、对象、方法相关知识笔记

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 类.对象.方法相关知识笔记 Objective-C相对于C语言有了面向对象的特性,但是ObjC又没有其他面向对象语言那么多语法特性,ObjC本身对面向对象进行了精简.下面是一些相关知识笔记. 类定义 成员变量 方法和属性 self关键字 类定义 在C#.Java等其他高级语言中定义一个类是相当简单点的,直接一个关键字class加一对大括号基本就完成了,但是在ObjC中类的定义相对变化比较大.现

Linux学习日志1-基本知识

1.冯.诺依曼体系计算机五大组成部件: 1.控制器:控制其他四个部件的运作 2.运算器:负责计算加减乘除 3.存储器:存放运算的数据来源与结果 4.输入设备:接收数据输入存入存储器 5.输出设备:从存储器接收数据输出 2.Linux的起源: 1991年一个芬兰大学生Linus Torvalds参考其老师的教学用操作系统Minix的思想(注意仅仅是思想),自己写了一个操作系统内核,命名为Linux 0.0.1,发布在comp.os.minix新闻组上,正式宣告Linux内核的诞生.从那时起,Lin

webpack2学习日志

webpack说容易也容易,说难也难,主要还是看个人,想学到什么样的程度,很多公司可能要求仅仅是会用就行,但是也有一些公司要求比较高,要懂一些底层的原理,所以还是要花一些时间的,看个人需求.这篇仅仅是做了一些总结,都是来自官网,便于复习. 一,先理解webpack的概念: 官网上:webpack 是一个现代 JavaScript 应用程序的模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用

Cocos2d-x 3.1.1 学习日志13--物理引擎登峰造极之路

cocos2dx在设计之初就集成了两套物理引擎,它们是box2d和chipmunk.我目前使用的是最新版的cocos2dx 3.1.1.引擎中默认使用的是chipmunk,如果想要改使用box2d的话,需要修改对应的android工程或者是ios工程的配置文件. 在2.x版本的cocos中,使用物理引擎的步骤十分繁琐.但在3.x版本中变得非常方便了.我这次的学习目标是制作一个打砖块的小游戏. 首先,现在的Scene类提供了一个静态工厂方法,用以创造一个集成物理引擎的场景. Scene::init