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. C++学习笔记32 断言函数

    首先,让我们来看看百度百科上"断言函数"定义说明: 1定义fr=aladdin#" class="nslog:1019" title="编辑 ...

  2. 跟着大神重写的KNN 文档归类小工具

    ·背景 在知道KNN之前,楼主有时候会粗糙地做一些分类模型的计算.在拜读了Orisun大神[http://www.cnblogs.com/zhangchaoyang/articles/2162393. ...

  3. 浙江大学PAT考试1009~1012(1010上帝是冠军。。)

    哎,pat1010即使java书面,只有java书面,还增加了两个点,,.啊,智商捉佳,主要pat有些不给明确的范围.造成遐想空间.. 还是按顺序介绍.. 题目地址:http://pat.zju.ed ...

  4. jmeter之GUI运行原理

    一.一语道破jmeter       大家都知道我们在应用jmeter的图形化界面来进行操作,保存后生成的是一个.jmx文件.     那么这个.jmx文件中都是些什么呢.   <?xml ve ...

  5. Monkey源码分析之事件源

    上一篇文章<Monkey源码分析之运行流程>给出了monkey运行的整个流程,让我们有一个概貌,那么往后的文章我们会尝试进一步的阐述相关的一些知识点. 这里先把整个monkey类的结构图给 ...

  6. VMWare Workstation:局域网PC连接虚拟机里的远程桌面或端口

    很简单.做一个理解: 1.NAT 2.VM的网卡,相当于路由器 环境: 物理路由器:192.168.0.1 PC1(win):192.168.0.2 PC2(win):192.168.0.3 PC2里 ...

  7. Spring Resource之ResourceLoader

    ResourceLoader接口意味着任何实现的对象都能够返回Resource实例. public interface ResourceLoader { Resource getResource(St ...

  8. solr的安装与配置

    solr的安装与配置 不久之前开发了一个项目,需要用到solr,因为所以在开始再网上查找资料,但是发现大部分的资料都是很片面的,要么就是只讲解solr如何安装的,要么就是只讲解solr的某一个部分的, ...

  9. 将Model实体类对象作为WebService接口参数(转)

    转自:http://www.cnblogs.com/fengyishou/archive/2009/02/27/1399281.html 关于web服务的有关基础知识,看了基本书,但是不敢在这里乱说, ...

  10. Android中那些权限

    Permission Permission Permission Group Permission Tree Users Permission ACCESS_CHECKIN_PROPERTIES 允许 ...