C# 类的介绍,参数传递,各种符号说法
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace HappyProject
- {
- public class Happy
- {
- public const string Slogan = "You are happy!";
- private DateTime when;
- private string why;
- public DateTime When { get; set; }
- public string Why { get; set; }
- }
- public class UnHappy
- {
- public const string Slogan = "You are unhappy!";
- private DateTime when;
- private string why;
- public DateTime When { get; set; }
- public string Why { get; set; }
- }
- }
写了两个类,没什么用呢。
类中的数据和函数称为类的成员。成员的可访问性可以是 公共的,保护的,内部的,私有的。
数据成员是包含类的数据,废话,字段(field),常量,我的那两个类都有了呢~事件我的类里面还没有。数据成员可以是static的,也可以是实例成员。
- 事件是类的成员,在发生某些行为(如改变类的字段或属性,或者进行了某种形式的用户交互操作)时候,它可以让对象通知调用方。客户可以包含所谓“事件处理程序”的代码来响应该事件,以后再说,树上写的,不是我说的哦。
函数成员提供了操作类中数据的某些功能。包括方法、属性、构造函数和终结器(finalizer)、运算符以及索引器。函数成员可以是static的(静态方法),也可以是实例成员(default)。
- Property is a method group which we can visit from client. How to visit? Object.Property. C#为都读写类中的属性提供了专用语法,所以不必使用那些名称中嵌有Get或者Set的方法。因为属性的这种语法不同于一般函数的语法,在客户端的代码中,虚拟的对象被当作实际的东西。
- Constructor构造函数是在实例化对象时自动调用的 auto-invoke的特殊函数。他们必须与所属的类同名,这个知道,且不能有返回类型。构造函数用于初始化字段的值。
- Finalizer is something like constructor. When CLR detects an object won't be used any more, it would invoke finalizer. Their name is the same with Class, but has a bolang line. 查了一下,叫tlide。附上这个。
“-”叫【破折号】(中文的长),属于中文使用的,英文中叫“dash”;
“-”,叫【连接号】(英文短的),属于英文专用的,叫“hyphen”
◆“_”是下划线,英文就是:underline
+ plus 加号;正号
- minus 减号;负号
± plus or minus 正负号
× is multiplied by 乘号
÷ is divided by 除号
= is equal to 等于号
≠ is not equal to 不等于号
≡ is equivalent to 全等于号
≌ is equal to or approximately equal to 等于或约等于号
≈ is approximately equal to 约等于号
< is less than 小于号
> is more than 大于号
≮ is not less than 不小于号
≯ is not more than 不大于号
≤ is less than or equal to 小于或等于号
≥ is more than or equal to 大于或等于号
% per cent 百分之...
‰ per mill 千分之...
∞ infinity 无限大号
∝ varies as 与...成比例
√ (square) root 平方根
∵ since; because 因为
∴ hence 所以
∷ equals, as (proportion) 等于,成比例
∠ angle 角
⌒semicircle半圆
⊙ circle 圆
○ circumference 圆周
π pi 圆周率
△ triangle 三角形
⊥ perpendicular to 垂直于
∪ union of 并,合集
∩ intersection of 交,通集
∫ the integral of ...的积分
∑ (sigma) summation of 总和
° degree 度
′ minute 分
″ second 秒
℃ Celsius system 摄氏度
{ open brace, open curly 左花括号
} close brace, close curly 右花括号
( openparenthesis, open paren 左圆括号
) close parenthesis, close paren 右圆括号
() brakets/ parentheses 括号
[ open bracket 左方括号
] close bracket 右方括号
[] square brackets 方括号
. period, dot 句号,点
| vertical bar, vertical virgule 竖线
&ersand, and, reference, ref 和,引用
* asterisk, multiply, star, pointer 星号,乘号,星,指针
/ slash, divide, oblique 斜线,斜杠,除号
// slash-slash, comment 双斜线,注释符
# pound 井号
\backslash, sometimes
escape 反斜线转义符,有时表示转义符或续行符
~tilde波浪符
. full stop 句号
, comma 逗号
: colon 冒号
; semicolon 分号
? question mark 问号
! exclamation mark (英式英语) exclamation point (美式英语)
'apostrophe撇号
- hyphen 连字号
-- dash 破折号
... dots/ ellipsis 省略号
" single quotation marks 单引号
"" double quotation marks 双引号
‖ parallel 双线号
& ampersand = and
~swungdash 代字号
§ section; division 分节号
→ arrow 箭号;参见号
- Operator override.
- Index qi 索引器allowed the objects to be indexed with array or collection.
接下来,书上开始一个个讲了
方法声明,方法调用会了。
public double ToBeHappy(double cost){
double left=cost;
left-=EatingKFC();
left-=BuyADress();
left-=ReadingBooks();
left-=DoSports();
return left;
}
一个我面试别人可能会考到的呢~值传递还是引用传递参数。
duang !Core section:给方法传递参数
参数可以通过引用或者通过值传递给方法。
- 在变量通过引用传递给方法的时候,被调用的方法得到的就是这个变量,所以在方法内部对变量进行的任何改变在方法退出后仍旧有效。
- 而变量通过值传递传送给方法,被调用的方法的得到的是变量的一个相同副本,也就是说,在方法退出后,对变量进行的修改会lost。
对于复杂的数据类型,按引用传递的效率更高,因为在按值传递时,必须复制大量的数据。
在C#中,除非特别说明,所有的parameters都是通过value值传递的。But, 在理解引用类型的含义时,需要注意。引用类型都有啥?忘了again。就记得个类了。
补益一下,想起吴国太了。
此乃吾之佳婿也!
男婚女嫁,需当交换文定之物!
吾乃吴国之母,谁敢造次!
有老身在,汝等皆可放心!
CLR支持两种类型,图片是盗取的,http://www.cnblogs.com/siqing99/archive/2012/04/03/2430918.html
C#的所有值类型均隐式派生自System.ValueType。
C#的值类型:结构!!!!可空类型Nullable!!!!数值类型int double什么的!!!!值类型在堆栈上
C#的引用类型:Array 数组!!!!类!!!!接口!!!!委托!!!!字符串!!!!object!!!!在那个托管堆上,garbage collector
内存分配的几点,在上面的博客里看到的,不是复制,而是自己打字打的。
值类型作为局部变量时,该实例将被创建在堆栈上stack;而如果值类型变量作为类型的成员变量时,它将作为类型实例数据的一部分,比如说上面Happy类里面的Why,同该类型的其他字段一样都保存在托管堆上。就是所谓的嵌套结构。
引用类型变量数据保存在托管堆上,但是根据实例的大小有所区别。如下,实例大小小于85000Byte时,则将该实例创建在GC堆上;而当实例太大了,则将该实例创建在LOH(大对象堆)上。
嵌套分两种情况。值类型中嵌套了引用类型,struct有个成员是个class。该引用类型将作为值类型的成员变量,堆栈上保存该成员的引用,而成员的实际数据在托管堆上。
第二种情况,引用类型嵌套值类型,那么值类型作为成员的话,在托管堆中。如果是某个函数成员中的局部变量,那么还是跟值类型的老家一样,在堆栈上。
补益结束了!
注意字符串的行为方式有所不同,因为字符串是不可变的,你硬要改它的值,就会创建另一个字符串对象。所以字符串无法采用一般引用类型的行为方式。在方法调用中,对字符串所做的任何改变都不会影响原始字符串。
默认值传递,C#要求对传递给方法的参数进行初始化,no matter passing parameters by value or by reference, initializing variable is important.
想把默认的值传递变成引用传递,用ref关键字。
static void Study(ref int hours)
{
hours++;//I don't like C#, but I don't like java, too.
}
Sometimes,我们想从函数的执行中输出多个值怎么办?用out关键字。这时候就不关心传入参数的值了,但是规定必须初始化,编译器会用out关键字来初始化。在方法的输入参数前面加上out前缀,传递给该方法的变量可以不初始化。该变量会默认引用传递。
今天就学这么多吧~tlide~待会背点单词!我是真的不爱学习呀!我好懒!改变自己!一点点改变!如果谁不小心看到了这个文章,摆脱赶紧看别的,别浪费时间~
string PrintHappy(string when, string why){
return when+" "+why;
}
When you invoke this method, you needn't pass parameters in the order of definition.
Like this, PrintHappy(why:"I picked up some money on the way home",when:"8 pm");
怎么关于参数的还有那么多?烦死了!还有个可选参数,以前用过。有的参数你可以赋个默认值给它,但是可选参数必须是方法定义的最后一个参数。
int TestMethod(int notOpetionalNumber, int optionalNumber=10){}//Mandatory
可选参数不行就用方法重载。方法名相同,返回类型可以不同,但是返回类型不同不作为判断他俩不同的依据。
哎呀!看完了,下一小节是属性!基本会了,明天写!
C# 类的介绍,参数传递,各种符号说法的更多相关文章
- java基础-BigDecimal类常用方法介绍
java基础-BigDecimal类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigDecimal类概述 我们知道浮点数的计算结果是未知的.原因是计算机二进制 ...
- UML类图介绍以及PlantUML使用方法
类的UML表示方法 UML介绍 类图,是UML(统一建模语言)中用于描述"类"以及"类与类"之间的示意图.它形象的描述出了系统的结构,帮助人们理解系统. 类图是 ...
- UML类图介绍&类的六大关系
UML类图介绍&类的六大关系 官方定义 UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,用于帮助软件开发人员进行思考和记录思路的方式 UML 图形化的语言 基本介绍 UML图: ...
- oc-12-NSString 类简单介绍及用法
// 11-[掌握]NSString 类简单介绍及用法 #import <Foundation/Foundation.h> int main(int argc, const char * ...
- 【Entity Framework】初级篇--ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateManager类的介绍
本节,简单的介绍EF中的ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager这个几个比较重要的类,它们都位于System.Data ...
- Entity Framework 学习初级篇2--ObjectContext类的介绍
转自:http://www.cnblogs.com/Tally/archive/2012/09/14/2685014.html 本节,简单的介绍EF中的ObjectContext.ObjectQuer ...
- CImage类的介绍与使用
CImage类的介绍与使用 程序代码下载处:http://download.csdn.net/source/2098910 下载处:http://hi.baidu.com/wangleitongxin ...
- Entity Framework 学习初级篇2--ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateManager类的介绍
本节,简单的介绍EF中的ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager这个几个比较重要的类,它们都位于System.Data ...
- JdbcTemolate类的介绍<一>
JdbcTemolate类的介绍 JdbcTemplate是Spring JDBC的核心类,封装了常见的JDBC的用法,同时尽量避免常见的错误.该类简化JDBC的操作,我们只需要书写提供SQL的代码和 ...
- 【转】Spring学习---Bean配置的三种方式(XML、注解、Java类)介绍与对比
[原文]https://www.toutiao.com/i6594205115605844493/ Spring学习Bean配置的三种方式(XML.注解.Java类)介绍与对比 本文将详细介绍Spri ...
随机推荐
- http响应状态码301和302
HTTP返回码中301与302的区别 (2012-10-15 22:06:09) 一.官方说法 301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于: 301 redir ...
- epoll 应用
/* * test_bittube.cpp * * Created on: 2015年7月13日 * Author: ting.guit */ #include <bind ...
- 【转】Unity 之 移动设备的触控操作
http://blog.csdn.net/anyuanlzh/article/details/18367941 这篇博文将简单的记录,如何用unity处理在移动设备上的触控操作. iOS和And ...
- 面向对象之abstract
1.abstract class,抽象类不能被实例化,只能被继承:抽象类中可以包含非抽象方法 2.abstract method();抽象方法只能在抽象类中进行声明,并且没有方法体,非抽象继承子类中必 ...
- CSS的display属性,显示或隐藏元素
<html> <head> <script type="text/javascript"> function removeElement() { ...
- VCL自带的TabControl真心不好用...
不是说功能, 而是指自绘能力, 开启OwnerDraw以后, 画是可以画了, 可是为啥每个Tab页头的边框不能变捏 只能是灰秃秃的, 感觉很不和谐 RZ的TabControl很强大, 可惜想用它需要带 ...
- Bluetooth HFP介绍
目录 1. 介绍 1.1 目的 1.2 使用场景 1.3 依赖关系 1.4 协议栈 1.5 角色 2. 应用层 3. 空白章节 4. 互操作性要求 4.1 介绍 4.2 Service Level C ...
- Java中重点关键词的区分
1.final, finally, finalize的区别final-修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承. 因此一个类不能既被声明为 abs ...
- CentOS6.7搭建蜜罐dionaea
yum -y install epel-release wget tar git autoconf* libtool-* mkdir /opt/dionaea 1.安装liblcfg软件.git cl ...
- [BS-01] 根据字符串对象的参数自动计算用来显示该字符串的UI控件的宽和高
根据字符串对象的参数自动计算用来显示该字符串的UI控件的宽和高 1. 影响昵称Label的高和宽的因素: 字体和字号大小.文字多少.高度取决于是否固定了宽度(是否限制了最大的宽度和高度) 2. 使用 ...