C#第二讲

一、值类型,引用类型

1、值类型:所有数值类型是值类型(int,float,double,枚举,布尔类型,结构,引用的地址,...等数值型值)

A、所有的值类型是储存在栈里面。

B、值类型的赋值,就是值的拷贝。

2、引用类型:对象,字符串,object,数组,...等有复杂模型的值

A、引用类型的值储存在堆里面的,栈里面储存的是它的引用地址。

B、引用类型的赋值实际上就是地址的拷贝。

3、类成员的调用方法

A、要去调用一个雷里面的非静态成员(属性【也叫字段】,方法),就要通过累的一个实例对象来调用。

B、类里面的静态成员(用static标注的成员)是只需通过类直接调用。

4、由类生成实例化对象时内存状态

A、类生成实例化对象时将所有非静态成员全部生成在堆里面,成员中的方法是储存在方法区,堆里面只存储方法的地址。

B、类中的静态成员单独储存在静态区中,所以不需要实例化直接通过类区调用。

C、当去实例化一个类的对象的时候,首先会在堆里面检索该类型的对象是否存在,如果存在就拷贝一份来做新的实例。

** 实例化对象时类里面的值类型和引用类型都会储存在堆里面。

5、装箱、拆箱

值类型转换成引用类型叫装箱。

如:int i=2;                        //值类型变量i

Object j=(object)i;         //把值类型变量i转换成object类型变量j,此时j里面的值为"2"。

引用类型转换成值类型叫拆箱。

如:Object j="123";            //在object变量j里储存字符型数据123

int I=(int)j;                  //把object变量j转换成int类型变量i,此时i里面的值为123。

6、变量类型

全局变量:类里面在方法外面的变量

局部(成员)变量:在方法里面的变量

静态变量:用static标注的全局变量或局部(成员)变量

7、显示转换和隐式转换

隐式转换没有性能损耗,显示转换有性能损耗。

8、【:?】和【??】的用法

int i = a > b ? 10:20;   //当a>b时i取值10,否则i取值20。

string s = a ?? b          //当a为null时s取b的值。

二、字符串

1、字符串转换成字符数组

string = "sdfhiudshfoiuhfoiuewhf"

char[] a = s.ToCharArray();          //ToCharArray时C#中获得字符数组的方法,在jq中是Split来获得字符数组。

2、Compare方法

strA < strB 则返回-1(负值)

strA = strB 则返回0

strA > strB 则返回1(正值)

** 字符串比较时比较的是同一位置的ASCII码的大小。

3、Equals方法

判断两个字符串是否相同,如果相同返回值为true,否则为false。

4、定位字符串

StartWith/EndWith         判断一个字符串是否以一个字符串开头/结尾,返回值true/false

indexOf/LastindexOf      某个指定的字符或字符串第一次(最后一次)出现的位置

5、截取字符串

string.Substring(起始位置[,截取长度])    //截取string中起始位置开始的指定长度。

string s1 = "abcdfeghijklmn";

string s = s1.Substring(3, 2);              //起始位置是从0开始的,结果是【df】。

6、插入和填充字符串

A、insert方法

string str1 = "hello ";

string str2 = "hi world";

string str3 = str2.Insert(3, str1);     //结果是【hi hello world】。

B、PadLeft/PadRigth方法

string str1="hi";

string str2=str1.PadLeft(4,‘@‘)           //目标字符串长度不足时用指定字符[@]来填充左边,结果是【@@hi】。

string str2=str1.PadRigth(4,‘@‘)         //目标字符串长度不足时用指定字符[@]来填充右边,结果是【[email protected]@】。

7、删除和剪切字符串Remove方法

A、Remove(起始位置,删除的数量)           //在字符串的起始位置开始删除指定数量字符。

string str2 = "hi world";

string str3 = str2.Remove(0, 3);         //结果是world。

B、Trim、TrimStart、TrimEnd方法

Char[] str1={‘@‘,‘#‘,‘$‘,‘ ‘};

string str2=" @China$# ";

string str3=str2.Trim(str1);                //在str2中删除所有开始和结尾字符满足str1数组中符合的字符,如果没有

指定str1就默认去掉前后空格,本例结果是【Chain】。

C、CopyTo方法

string str1="China";

char[]str2=new char[100];

str1.CopyTo(0,str2,0,3);                    //CopyTo的参数:要复制的字符的起始位置,目标数组,指定目标数组中开始

存放的位置,要复制的字符个数。本例结果是数组的0,1,2元素中存有Chi。

D、替换字符串

string str1="hello";

string str2=str1.Replace("ll","r");      //str1中的【ll】字符串用字符串【r】来替换。本例结果是【hero】。

E、格式化字符串

string.Format()                           //将指定字符串中的每个格式项替换为相应对象的值的文本等效项。

Console.WriteLine("{0,10}  {1,10}\n", "Decimal", "Hex");

//{0,10}中第一个参数表示第0位置的替代项,第二个参数是为该项留出10个字符位,省略第二个参数则按替代内容

长度显示。本例结果是【   Decumal       Hex】

string str1= String.Format("{0,10:G}: {0,10:X}", -32768);

//{0,10:G}中第一个参数表示第0位置的替代项,第二个参数是为该项留出10个字符位,冒号后面的参数是指定数据

格式:G是字符串型值,F是保留小树后两位的字符串型数字,D是10进制数,X是16进制数。本例结果是【    -32768      8000】

三、StringBuilder

1、字符串拼凑

耗费比较大的资源。

2、StringBuilder

StringBuilder sb =new StringBuilder();

sb.Append("aaa");

sb.Append("bbb");              //结果string sb中内容变为aaabbb。

时间: 2024-11-04 22:35:48

C#第二讲的相关文章

通达OA 二次开发培训第二讲

本次是通达OA二次开发第二讲,主要介绍了如何在通达OA中进行程序开发,并将开发程序挂接到OA系统中.

从大数据菜鸟走上大师的历程 第二讲:函数定义,流程控制,异常处理

Scala 第二讲 函数定义,流程控制,异常处理 For 循环  for(左边为单个对象obj  <-  右边为对象集合objs ) for 循环里把右边的对象赋给左边 现在正是学习大数据的最好机遇,不花一分钱就可以成为大数据高手,实现年薪50万的梦想. 王家林的第一个中国梦:免费为全社会培养100万名优秀的大数据从业人员! 如果您有兴趣请点击这个链接进入大数据的学习 http://blog.sina.com.cn/s/blog_8fbd39ee0102vto3.html 如果您确实感觉视频教程

机器学习基石第二讲:learn to answer yes/no

博客已经迁移至Marcovaldo's blog (http://marcovaldong.github.io/) 刚刚完成了机器学习基石的第二讲,主要介绍了机器学习的定义,PLA算法和pocket PLA算法.下面将笔记整理在下面. Perceptron Hypothesis Set 延续前面的信用卡发放问题.银行已有的用户数据可能包括用户的年龄.年薪.工作时长.债务情况等特征信息,我们分别用x1,x2,-,xd来表示,那么对于每一个用户都有一个向量来表示其信息.我们为每一个特征信息分配一个权

16位汇编第六讲汇编指令详解第二讲

16位汇编第六讲汇编指令详解第二讲 1.比较指令 CMP指令 1.CMP指令是将目的操作数减去源操作数,按照定义相应的设置状态标志 2.CMP指令执行的功能与SUB指令(相减指令)一样,但是不同的是CMP指令之根据结果设置标志位 而不修改值 可以操作的指令格式 CMP reg,imm/reg/mem CMP mem,imm/reg 上面是CMP指令的语法,具体的也可以查询帮助文档,inter手册 inter手册查的办法 第一个框代表了CMP指令的所有语法 比如 reg,reg 表示可以比较寄存器

《上古天真论》第二讲文字版

上古天真论篇第二讲 主讲:徐文兵  主持:梁  冬 播出时间:2008-12-20  23:00—24:00     经文:食饮有节,起居有常,不妄作劳,故能形与神俱,而尽其天年,度百岁乃去.今时之人不然也,以酒为浆,以妄为常,醉以入房,以欲竭其精,以耗散其真,不知持满,不时御神,务快其心,逆于生乐,起居无节,故半百而衰也. 梁:辅佐中国文化,发扬光大,大家好我的梁东,在我面前的是我非常尊敬的厚朴中医学堂的堂主徐文兵老师. 徐:梁东好,听众朋友们,大家好! 梁:大家好!我们计划,从新发现中医太美

POI教程之第二讲:创建一个时间格式的单元格,处理不同内容格式的单元格,遍历工作簿的行和列并获取单元格内容,文本提取

第二讲 1.创建一个时间格式的单元格 Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿 Sheet sheet=wb.createSheet("第一个Sheet页"); // 创建第一个Sheet页 //第一个单元格 Row row=sheet.createRow(0); // 创建一个行 Cell cell=row.createCell(0); // 创建一个单元格 第1列 cell.setCellValue(new Date()); // 给

(转)【风宇冲】Unity3D教程宝典之AssetBundles:第二讲

原创文章如需转载请注明:转载自风宇冲Unity3D教程学院 AssetBundles第二讲:AssetBundles与脚本 所有Unity的AssetBundle,无论是从本地获取 还是www,或者打包整个场景.物体上的脚本都不会被编译.所以AssetBundle打包的时候即使物体上有脚本.导入后其他所有Unity的文件都不会有问题,唯独脚本是没作用的.那能不能用脚本呢? 答案是,可以! 核心是脚本可以打包进Dll,然后在客户端用System.Reflection下的Assembly来加载. 步

32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数

32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数 (如果想看所有代码,请下载课堂资料,里面有所有代码,这里会讲解怎么生成一个窗口程序) 一丶32位汇编编写Windows窗口程序 首先我们知道32位汇编是可以调用Windows API的,那么今天我们就调用windowsAPI来写一个窗口程序 如果你有windows开发知识,那么就很理解了,如果没有,那么跟着我写,跟着步骤去写,那么也可以写出来 首先我们要编写一个窗口程序(使用SDKAPI编写)有几个步骤 1.设计窗口类 2.注

Unity3D教程宝典之光影烘焙:第二讲AreaLight

Area Light,俗称面灯.没有任何实时光照的效果,仅用于Light baking即烘焙.创建一个Area Light,界面如下 Color:颜色Intensity:强度,Width:宽Height:高 Scale缩放对光没有任何影响.主要是宽高调整面的区域大小.选中Arealight后,Arealight的区域会在Scene窗口中以黄线框显示,AreaLight的Z轴指向的方向即光照的方向. 用AreaLight烘焙室内灯光效果(1)创建一个空场景(2)创建Cube并缩放成扁平面后.复制C

Stanford机器学习---第二讲. 多变量线性回归 Linear Regression with multiple variable

原文:http://blog.csdn.net/abcjennifer/article/details/7700772 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学习系统设计.SVM(Support Vector Machines 支持向量机).聚类.降维.异常检测.大规模机器学习等章节.所有内容均来自Standford公开课machine