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++图形和游戏库,我希望这些库能够帮助开发者,在他们的下一个项目中能够让他们的应用程序拥有让人印象深刻和吸引力的布局。访问下面的目录,并且在留言板中分享你的想法。

1)Antigrain

Anti-Grain Geometry(AGG) 是一个开放源码,免费的图形库,采用商业标准的C++来写。在许可证页面描述了使用AGG的条件和相关项,AGG没有依靠任何图形的API接口或技术,基本上,你能想象AGG作为一个渲染引擎,可以从一些向量数据产生了一些像素图像。

2)Amanith

AmanithVG SRE是一个纯粹的软件解决方案,授予了一个最高级别的矢量图形质量,而没有在任何一种平台或架构上牺牲了性能。由于它的原始的多边形光栅化算法和专用的优化扫描线过滤,这个引擎在市场上组成了最快的OpenVG软件渲染解决方案。

3)Codehead

4)Oscilloscope Lib

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/

stay hungry stay foolish ----jobs 希望多多烧香!
 
分类: 行业扩展
 
 

C#:.net/方法/字符串/数组的更多相关文章

  1. Java中将字符串用空格分割成字符串数组的split方法

    官方文档链接:public String[] split(String regex) 本文以空格作为分割串. CaseOne import java.util.Scanner; public clas ...

  2. JS对象 字符串分割 split() 方法将字符串分割为字符串数组,并返回此数组。 语法: stringObject.split(separator,limit)

    字符串分割split() 知识讲解: split() 方法将字符串分割为字符串数组,并返回此数组. 语法: stringObject.split(separator,limit) 参数说明: 注意:如 ...

  3. js 字符串方法 和 数组方法总览

    字符串方法        search()             方法搜索特定值的字符串,并返回匹配的位置.         相比于indexOf(),search()可以设置更强大的搜索值(正则表 ...

  4. Javascript-常用字符串数组操作

    字符串的操作在编写Js的过程中是不可避免的 因为它太多的API 还有相似的API让我们很头痛 为了避免以后遇到模拟两可的问题 还是做个笔记比较好 把常用的字符串操作记录下来成笔记 方便以后查找 No1 ...

  5. Matlab 之 字符串数组查找

    Matlab的优势在于向量操作,字符串操作往往费时费力,但是如果能充分利用Matlab自带的一些函数,也可以取得不错的效果.下面就介绍一下字符串数组查找的小技巧. 字符串数组我通常会选择应用cell格 ...

  6. 探讨js字符串数组拼接的性能问题

    这篇文章主要介绍了有关js对字符串数组进行拼接的性能问题,字符串连接一直是js中性能最低的操作之一,应该如何解决呢?请参看本文的介绍 我们知道,在js中,字符串连接是性能最低的操作之一. 例如: 复制 ...

  7. java中如何将字符串数组转换成字符串(转)

    如果是 “字符串数组” 转 “字符串”,只能通过循环,没有其它方法 String[] str = {"abc", "bcd", "def"} ...

  8. JavaScript内置对象(字符串,数组,日期的处理)

    Date 日期对象 日期对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 定义一个时间对象 : var Udate=new Date(); 注意:使用关键字new,Date()的首 ...

  9. SQL对字符串数组的处理详解

    原文地址:SQL字符串数组操作文章出处:DIY部落(http://www.diybl.com/course/7_databases/sql/sqlServer/2007106/76999.html) ...

随机推荐

  1. Hibernate各保存方法之间的差 (save,persist,update,saveOrUpdte,merge,flush,lock)等一下

    hibernate保存  hibernate要保存的目的是提供一个方法,多.它们之间有许多不同之处,点击此处详细说明.使得差: 一.预赛: 在所有.阐释.供hibernate,,transient.p ...

  2. POJ3468 A Simple Problem with Integers 【段树】+【成段更新】

    A Simple Problem with Integers Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 57666   ...

  3. C++拷贝构造函数具体解释

    一. 什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是非常easy的,比如: int a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各 ...

  4. 经典HTML5小游戏 支持各种浏览器 (围住神经猫)

    源码地址: http://files.cnblogs.com/files/liujing379069296/MyCat.rar 插件地址:http://files.cnblogs.com/files/ ...

  5. WebBrowser控件使用详解

    原文:WebBrowser控件使用详解 方法 说明 GoBack 相当于IE的“后退”按钮,使你在当前历史列表中后退一项 GoForward 相当于IE的“前进”按钮,使你在当前历史列表中前进一项 G ...

  6. Windows下一个ROracle安装与使用

    ROracle一个简短的引论: ROracle这是R连接到接入Oracle数据库DBI(Oracledatabase interface)介面.这是基于OCI一个DBI兼容Oracle司机. 具体见说 ...

  7. IS2009制作Oracle 静默安装包(二) 感谢空白先生特许授权

    原文:IS2009制作Oracle 静默安装包(二) 感谢空白先生特许授权 上一篇: IS2009制作Oracle 静默安装包(一)感谢空白先生特许授权本文经原作者特许授权于海洋女神发布,转载请务必注 ...

  8. Installshield关于.NET安装时需要重启动的处理办法,以及延伸出的重启后继续安装的安装包的一点想法

    原文:Installshield关于.NET安装时需要重启动的处理办法,以及延伸出的重启后继续安装的安装包的一点想法 很多朋友做安装包的时候,所打包的软件需要.NET Framework之类的环境,他 ...

  9. ExtJS4 便捷三层开发模式

    ExtJS4 便捷三层开发模式 定义类已经不是ext4.x一个新特性,但与ext3.x的自定义类有语法上的区别.将相关模块封装成类可以有效的减少浏览器的压力,提高渲染速度,同时抽象每一个可重用方法,减 ...

  10. MySQL在Windows和Linux减少数据库

    Linux减少数据库代码: 1,创建一个空数据库cddl mysql> create database cddl; Query OK, 1 row affected (0.00 sec) 2,还 ...