C#:.net/方法/字符串/数组
C#:.net/方法/字符串/数组,那点事
首先还是先说下(几个概念的东西)c#下的.net平台的构造快及其功能作用和程序集:
.net:
.net平台是由:a:运行库+b:全面基础类库(这个是从程序员的角度来看的)
CLR(公共语言运行库):定位加载管理.net类型,同事也负责一些底层细节的工作,如:内存,委托,线程的管理;
CTS(公共类型系统):描述了运行库支持的所有数据类型,编程结构,指定了这些实体的交互和在元数据中格式的表示。
CLS(公共语言规范):规定所有.net语言支持的公共类型和编程结构的子集。
b:全面基础类库:不仅包含了各种基本类型的封装,还支持一些实际应用中的服务。
什么是程序集:包含.net运行库下的托管代码的二进制单元;
程序集扩展名:*.dll和*.exe二进制文件,和windows中的二进制文件有着相同的扩展名,但是他们内部是完全不同的,.net二进制文件不包含特定的平台指令,包含的是(CIL)中间语言和类型元数据。
下面首先说下:
1.string字符串:是一个引用类型,在垃圾回收堆上分配对象;
1.1. 告诉你个秘密其实他是不可改变的,真的我没有忽悠你,下面就开始说明下这一现象;
首先写个代码,说说:
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7
8
9 namespace ConsoleApplication1
10 {
11 class Program
12 {
13 static void Main(string[] args)
14 {
15 System.String str = "lixiaofeng";
16 //输出初始化后的值:
17 Console.WriteLine("str is : {0}",str );
18
19 //大写str初始化值中的小写字母;
20 str.ToUpper();
21
22 Console.WriteLine("大写str后,str is:{0}", str);
23 Console.ReadLine();
24
25 }
26
27
28
29 }
30 }
运行:
1.2.逐字字符串@:
优点;1.自动转义符,2.保留空白的空间,3.允许插入“”;
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6 using System.Data.SqlClient;
7 using System.Data;
8
9
10
11 namespace ConsoleApplication1
12 {
13 class Program
14 {
15
16 static void Main(string[] args)
17 {
18 //注意看“Data Source=WIN-4CMVQAJ4ACD\\SQLEXPRESS;Initial”中间有2个‘\’,第二个是我手动加的,
19 System.String sqlstr= "Data Source=WIN-4CMVQAJ4ACD\\SQLEXPRESS;Initial Catalog=SERVER;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False";
20 sqlconnn(sqlstr );
21 Console.ReadLine();
22
23 }
24 public static void sqlconnn(string sqlstr)
25 {
26 SqlConnection sqlcnn = new SqlConnection(sqlstr );
27 try
28 {
29 sqlcnn.Open();
30 if (sqlcnn.State == ConnectionState.Open)
31 {
32 Console.WriteLine("连接成功!");
33 sqlcnn.Close();
34 }
35 }
36 catch (Exception ex)
37 {
38 Console.WriteLine(ex );
39 sqlcnn.Close();
40 }
41
42 }
43
44
45
46 }
47 }
运行:
方法2:
1 static void Main(string[] args)
2 {
3 //注意看“Data Source=WIN-4CMVQAJ4ACD\SQLEXPRESS;Initial”中间有1个‘\’,
4 System.String sqlstr= @"Data Source=WIN-4CMVQAJ4ACD\SQLEXPRESS;Initial Catalog=SERVER;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False";
5 sqlconnn(sqlstr );
6 Console.ReadLine();
7
8 }
运行:
在介绍一个可变字符串:
1 static void Main(string[] args)
2 {
3
4 System.Text.StringBuilder strb = new StringBuilder("liyifeng",100);
5 Console.WriteLine("初始化值是:{0}",strb );
6 //在初始化值后加上”123“;
7 strb.AppendLine("123");
8 Console.WriteLine("添加后 :{0}",strb );
9 Console.ReadLine();
10
11 }
运行;
2.数组;隐式数组:
1 static void Main(string[] args)
2 {
3
4 //常规情况下定义初始化 整形数组;
5 int[] array_int = {1,2,3,4,5 };
6 //输出:
7 foreach (int ss in array_int)
8 Console.Write(ss+"\t");
9 Console.Write("\n"+"下面是隐式类型:"+"\n");
10 //使用隐式数组;
11 var var_int = new []{1,2,3,4,5 };
12 foreach (var vv in var_int)
13 Console.Write(vv +"\t");
14 Console.ReadLine();
15
16 }
运行:
其实在LINQ中会用的很多;
1 static void Main(string[] args)
2 {
3 var array_int = new[] {12,33,50,68,89 };
4 var vv = from i in array_int where i > 50 select i;
5 foreach (var ss in vv)
6 Console.WriteLine(ss );
7 Console.ReadLine();
8 }
运行:
3.方法;
3.1.常见用到的方法有(输入2个值,返回一个值):
1 static void Main(string[] args)
2 {
3 Console.WriteLine("a+b={0}",add(2,3));
4 Console.ReadLine();
5 }
6 //输入a,b两个整形变量的值,返回他们的和;
7 public static int add(int a,int b)
8 {
9 return a + b;
10 }
运行:
3.1.1.如果用这种常规的方法,在方法里面对参数对应的数据进行修改的话,结果会是什么呢?
1 static void Main(string[] args)
2 {
3 int a = 2, b = 3;
4 Console.WriteLine("a is:{0}", a);
5 Console.WriteLine("b is:{0}", b);
6 add(a ,b );
7 Console.WriteLine("a is:{0}",a );
8 Console.WriteLine("b is:{0}",b );
9 Console.ReadLine();
10 }
11 //输入a,b两个整形变量的值,返回他们的和;
12 public static void add(int a,int b)
13 {
14 a = 100; b = 88;
15 } static void Main(string[] args)
16 {
17 int a = 2, b = 3;
18 Console.WriteLine("a is:{0}", a);
19 Console.WriteLine("b is:{0}", b);
20 add(a ,b );
21 Console.WriteLine("a is:{0}",a );
22 Console.WriteLine("b is:{0}",b );
23 Console.ReadLine();
24 }
25 //输入a,b两个整形变量的值,返回他们的和;
26 public static void add(int a,int b)
27 {
28 a = 100; b = 88;
29 }
运行:
结果:a还是2,b还是3;边有改变;
3.2.1.ref方法(试试):
1 static void Main(string[] args)
2 {
3 int a = 2, b = 3;
4 Console.WriteLine("a is:{0}", a);
5 Console.WriteLine("b is:{0}", b);
6 add(ref a ,ref b );
7 Console.WriteLine("a is:{0}",a );
8 Console.WriteLine("b is:{0}",b );
9 Console.ReadLine();
10 }
11 //输入a,b两个整形变量的值,返回他们的和;
12 public static void add(ref int a,ref int b)
13 {
14 a = 100; b = 88;
15 } static void Main(string[] args)
16 {
17 int a = 2, b = 3;
18 Console.WriteLine("a is:{0}", a);
19 Console.WriteLine("b is:{0}", b);
20 add(ref a ,ref b );
21 Console.WriteLine("a is:{0}",a );
22 Console.WriteLine("b is:{0}",b );
23 Console.ReadLine();
24 }
25 //输入a,b两个整形变量的值,返回他们的和;
26 public static void add(ref int a,ref int b)
27 {
28 a = 100; b = 88;
29 }
运行:
这样就改变了参数对应值;需要注意的是在传递方法前要初始化参数值;
3.3.1.out方法:在传递参数前不给参数进行初始化;
1 static void Main(string[] args)
2 {
3 int a, b;
4 add(out a,out b );
5 Console.WriteLine("a is:{0},b is:{1}",a,b );
6 Console.ReadLine();
7
8 }
9
10
11 //输入a,b两个整形变量的值,返回他们的和;
12 public static void add(out int a,out int b)
13 {
14 a = 100; b = 88;
15 }
运行:
3.4.1.方法中参数是数组形式(params):
1 static void Main(string[] args)
2 {
3 System.Int32[] data = {1,2,3,4,5 };
4 Console.WriteLine("avg is:{0}",avg(data ));
5 Console.ReadLine();
6 }
7
8 //输入一个整形数组,求其平均值:
9 public static double avg(params int[] values)
10 {
11 double avgg = 0;
12 Console.WriteLine("一共输入有{0}个数",values.Length.ToString());
13 if (values.Length == 0)
14 {
15 return avgg;
16 }
17 else
18 {
19 for (int i = 0; i < values.Length; i++)
20 {
21 avgg+=values[i];
22 }
23
24 return (avgg/values.Length) ;
25
26 }
27 } static void Main(string[] args)
28 {
29 System.Int32[] data = {1,2,3,4,5 };
30 Console.WriteLine("avg is:{0}",avg(data ));
31 Console.ReadLine();
32 }
33
34 //输入一个整形数组,求其平均值:
35 public static double avg(params int[] values)
36 {
37 double avgg = 0;
38 Console.WriteLine("一共输入有{0}个数",values.Length.ToString());
39 if (values.Length == 0)
40 {
41 return avgg;
42 }
43 else
44 {
45 for (int i = 0; i < values.Length; i++)
46 {
47 avgg+=values[i];
48 }
49
50 return (avgg/values.Length) ;
51
52 }
53 }
运行:
3.5.1.方法参数的重命名:
1 static void Main(string[] args)
2 {
3 int a = 1, b = 2;
4 string c = "我就是c啊!";
5
6 Console.WriteLine("a is:{0}\nb is:{1}\n c is:{2}", a.ToString(), b.ToString(), c);
7
8 //这里需要注意的是:位置参数要在命名参数前,第一个一定要是位置参数:
9 sp(a,c :c,b :b );
10 Console.ReadLine();
11 }
12
13 public static void sp(int a, int b, string c)
14 {
15 System.Int32 olda = new int();
16 System.Int32 oldb = new int();
17
18 olda = a;
19 oldb = b;
20
21 Console.WriteLine("a=olda is:{0}\nb=oldb is:{1}\n c is:{2}",olda.ToString(),oldb.ToString(),c );
22 }
运行:
今天就说这吧!
6个免费的C++图形和游戏库
继上一篇,本篇同样出自zoomzum.com,具体可见http://zoomzum.com/6-free-c-graphics-and-game-libraries/,介绍了6个免费的C++图形和游戏库,同样出自zoomzum.com。GUI库对应了微软的MFC,提供了程序与用户交互的图形化界面,而图形和游戏库则对应了微软的DirectX和跨平台的OpenGL。以下是原文的翻译:
C++是一种多范式,遵循自由的形式,并且通用的一门强大的编程语言,这门语言被视为是中间层次的语言,之所以这样认为,是因为它拥有高层语言和底层语言的一些特性。
C++之所以成为最流行的语言之一是有许多原因的,它的应用范围包括系统软件,设备驱动,应用程序软件和许多其他包含客户端程序和娱乐的软件,最好的一个例子是视频游戏。
在下面的列出的几项中我们介绍了一些超级有用的C++图形和游戏库,这些库能为开发者的工程或应用程序提供良好的接口来增加其功能性。C++的用户将会喜欢使用这些库为了他们的下一个工程。
今天,我们将会开发者分享C++图形和游戏库,我希望这些库能够帮助开发者,在他们的下一个项目中能够让他们的应用程序拥有让人印象深刻和吸引力的布局。访问下面的目录,并且在留言板中分享你的想法。
Anti-Grain Geometry(AGG) 是一个开放源码,免费的图形库,采用商业标准的C++来写。在许可证页面描述了使用AGG的条件和相关项,AGG没有依靠任何图形的API接口或技术,基本上,你能想象AGG作为一个渲染引擎,可以从一些向量数据产生了一些像素图像。
2)Amanith
AmanithVG SRE是一个纯粹的软件解决方案,授予了一个最高级别的矢量图形质量,而没有在任何一种平台或架构上牺牲了性能。由于它的原始的多边形光栅化算法和专用的优化扫描线过滤,这个引擎在市场上组成了最快的OpenVG软件渲染解决方案。
3)Codehead
5)Lib SDL
SDL是一个跨平台的多媒介的库,被设计来为音频,键盘,鼠标,手柄,3D硬件提供低级别的访问,其通过OpenGL和2D视频帧缓冲来完成。它被MPEG播放软件,模拟器,和许多受欢迎的游戏使用,包括获奖的Linux端口:“文明:呼叫电源。”( It is used by MPEG playback software, emulators, and many popular games, including the award winning Linux port of “Civilization: Call To Power.”)
6)Ogre 3d
OGRE(面向对象的图形渲染引擎)是一个用C++编写的,面向场景,灵活的3D引擎,被设计来使开发者更加容易和更直观地使用它来开发利用硬件加速的3D图形应用程序。该类库抽象了一些使用底层系统库的细节,如Direct3D和OpenGL,并提供了一个基于世界对象和其他直观类的接口。
如有所需,请看原文:http://zoomzum.com/6-free-c-graphics-and-game-libraries/
C#:.net/方法/字符串/数组的更多相关文章
- Java中将字符串用空格分割成字符串数组的split方法
官方文档链接:public String[] split(String regex) 本文以空格作为分割串. CaseOne import java.util.Scanner; public clas ...
- JS对象 字符串分割 split() 方法将字符串分割为字符串数组,并返回此数组。 语法: stringObject.split(separator,limit)
字符串分割split() 知识讲解: split() 方法将字符串分割为字符串数组,并返回此数组. 语法: stringObject.split(separator,limit) 参数说明: 注意:如 ...
- js 字符串方法 和 数组方法总览
字符串方法 search() 方法搜索特定值的字符串,并返回匹配的位置. 相比于indexOf(),search()可以设置更强大的搜索值(正则表 ...
- Javascript-常用字符串数组操作
字符串的操作在编写Js的过程中是不可避免的 因为它太多的API 还有相似的API让我们很头痛 为了避免以后遇到模拟两可的问题 还是做个笔记比较好 把常用的字符串操作记录下来成笔记 方便以后查找 No1 ...
- Matlab 之 字符串数组查找
Matlab的优势在于向量操作,字符串操作往往费时费力,但是如果能充分利用Matlab自带的一些函数,也可以取得不错的效果.下面就介绍一下字符串数组查找的小技巧. 字符串数组我通常会选择应用cell格 ...
- 探讨js字符串数组拼接的性能问题
这篇文章主要介绍了有关js对字符串数组进行拼接的性能问题,字符串连接一直是js中性能最低的操作之一,应该如何解决呢?请参看本文的介绍 我们知道,在js中,字符串连接是性能最低的操作之一. 例如: 复制 ...
- java中如何将字符串数组转换成字符串(转)
如果是 “字符串数组” 转 “字符串”,只能通过循环,没有其它方法 String[] str = {"abc", "bcd", "def"} ...
- JavaScript内置对象(字符串,数组,日期的处理)
Date 日期对象 日期对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 定义一个时间对象 : var Udate=new Date(); 注意:使用关键字new,Date()的首 ...
- SQL对字符串数组的处理详解
原文地址:SQL字符串数组操作文章出处:DIY部落(http://www.diybl.com/course/7_databases/sql/sqlServer/2007106/76999.html) ...
随机推荐
- R语言数据分析系列六
R语言数据分析系列六 -- by comaple.zhang 上一节讲了R语言作图,本节来讲讲当你拿到一个数据集的时候怎样下手分析,数据分析的第一步.探索性数据分析. 统计量,即统计学里面关注的数据集 ...
- Linux内核和根文件系统引导加载程序
续博文<u-boot之u-boot-2009.11启动过程分析> Linux内核启动及文件系统载入过程 当u-boot開始运行bootcmd命令.就进入Linux内核启动阶段,与u-boo ...
- [ Alcatraz ]管理Xcode插件
[ Alcatraz 配置 ] 1.包管理器在线安装 Terminal终端 $ curl -fsSL https://raw.githubusercontent.com/supermarin/Alca ...
- vS2010 列表控件 加入右键菜单
1.首先,就需要信息加入权限控制,例如,下面的对话框弹出 2,例如以下图选择须要的消息响应,这里选择NM_RCLICK 消息. 3,加入例如以下代码 </pre><pre name= ...
- python解析Yahoo的XML格式的天气预报,获取当天和近期几天的天气:
下面是接口xml格式数据: <rss xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo=& ...
- ASP.NET 5 :读写数据库连接字符串
ASP.NET 5 :读写数据库连接字符串 1.概述 ASP.NET 5模板项目配置文件采用了JSON格式,你依然可以采用以前的xml格式.C#对web.config或app.config读写及加密有 ...
- android 如何加入第一3正方形lib图书馆kernel于
注意:只能lib图书馆kernel编译到位.例如下列: alps/kernel/ alps/mediatek/custom/common/kernel/ alps/mediatek/custom/$p ...
- JavaScript中的单引号和双引号报错的解决方法
在使用JavaScript显示消息或者传递字符数据的时候,经常会碰到数据中夹杂单引号(')或者双引号("),这种语句往往会造成JavaScript报错.对此一般采用/'或者/"的解 ...
- outlook 会议室
原文:outlook 会议室 但是,里面的方法只能用于发送普通电子邮件.如果要发起会议之类的特殊邮件的话,可以C#调用Outlook API,自身的API. 创建项目后,为它添加.NET引用:“Mic ...
- 查询在应用程序运行得很慢, 但在SSMS运行得很快的原因探究
原文:查询在应用程序运行得很慢, 但在SSMS运行得很快的原因探究 查询在应用程序运行得很慢, 但在SSMS运行得很快的原因探究 -理解性能疑点 1 引言 内容来自http://www.so ...