2017-9-17C#笔记(方法,方法参数 ,foreach语句)

  1. 方法:

方法作为类中最常见的最有用的一个成员,算是完成特定任务,实现特定任务的重要的编程模式.

“更少的代码,更多的复用”

(有些教程中,将方法称为函数,函数和方法没有本质的区别,但是通常自己写的俄实现特定的功能的代码块,叫做方法;有系统简介或者直接生成的不完整的代码块叫做函数.)

方法定义的一般形式:

Static      返回类型         方法名(形式参数列表)

{

声明部分

执行部分

}

事例1:编写方法判断一个数是否是完全数:完全数的定义如下:它所有的真因子(即除了自己本身之外的数)的和是这个数比如6=1+2+3;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

{

class Program

{

static bool perfect(int n)

{

int sum = 0;

for (int i=1; i < n; i++)

if (n % i == 0)

sum = sum + i;

if (sum == n)

return true;

else

return false;

}

static void Main(string[] args)

{

int n;

Console.WriteLine("请?输o?入¨?要°a判D断?的ì?值|ì:êo");

n = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("{0}是o?完a¨o全¨?数oy?ê?{1}", n, perfect(n));

Console.Read();

}

}

}

  1. 方法的参数

方法参数的本质是为了在调用者和方法之间实现数据的交换,是方法接口的重要组成部分。

形式参数简称形参,指的是方法定义时方法头中的形式参数,这些形式参数在方法未被调用时不占据内存的存储单元,只为了描述方内的处理机制u,其目的是用来接收调用该方法时传入的参数。形式参数是属于方法本身的变量,其初值来源于方法的调用,只有在程序执行过程中调用了该方法,形参才有可能得到具体的值,并参与运算,执行方法的功能。

  1. OpenTK

(1)   OpenTK概述:

.NET框架为C#语言的运行提供了一套基础库,使用它可以开发包含从传统的命令行或者图形用户界面(GUI)应用程序到ASP.NET所提供的应用程序。

如果程序开发中需要使用一些专业库或第三方库德功能时,需要开发者下载形影的库资源,并安装配置相关环境参数才能使用。

在C#语言环境下能够开发OpenGL程序的主要两种做法:

①  在C#中直接调用OpenGL函数

②  借助第三方开源库,比如SharpGL,CsGL、OpenTK、Tao框架等

OpenTK的使用具有以下特点:

①  安装部署方便,在程序中可以直接引用

②  可以跨平台的开发,特别是支持OpenGL ES

③  支持64位的Windows程序开发

④  资源占用和相应速度等性能较优

⑤  对OpenGL的版本支持在3.3以上

OpenTK是Open ToolKit的简写,它支持使用托管语言调用OpenGL、OpenGL|ES、OpenCL以及OpenAL的API(Application Program Interface)

OpenTK尝试利用托管运行优势提供一个跨平台的统一界面。

OpenTK使用泛型取代了隐式指针,使用强大的枚举类型取代了普通的常量,使用分类函数管理取代了普通的函数列表,并集成了一个数学库,可被每一种API直接调用。

而OpenTK的特点如下:

①  使用C#编写,并且可被任何托管语言直接使用。

②  操作界面统一,类型封装完善,利于软件的快速开发。

③  单独使用或继承到Widows Forms、WPF或GTK#等其他应用程序中均可

④  跨平台的二进制文件形式

(2)   OpenTK.Math

OpenTK定义了常用的向量、四元组以及矩阵,对便准的标量类型进行了扩充。

比如OpenTK允许用不同的方式设置GL.Color()函数的参数

GL.Color(0.0f,1.0f,1.0f);

Vector3 MyColor=new Vector3(0.0f,1.0f,1.0f);

GL.Color(MyColor);

GL.Color(Color.Cyan);//Color类的常量,青色

OpenTk.Math提供的类型定义如下:

①  Vectors:

Half、Vector2h 、Vector3h 、Vector4h ;、

Single 、 Vector2、Vector3、Vector4;

Double、Vector2d、Vector3d、Vector4d;

②  Quaternion:Quaternion、Quaternioned;

③  Row-Major Matrices:Matrix3d、Matrix4d、Matrix4;

上述这些类都可以被强制类型转换和序列化。

例如: Vector2d TexCoord = new Vector2d(0.2,0.5);

Vector2h HalfTexCoord=(Vector2h)TexCoord;

Vector3h Normal=(Vector3h)Vector3.UnitX;

(3)   OpenTK.Graphics

即OpenTK中有关OpenGL和ES的部分,为二维或三维图像编程提供了强大的、跨平台的、跨编程语言的底层图形库。其中ES针对多种嵌入式系统专门设计,包括控制台、移动电话、手持设备、家电设备和汽车。

(4)   OpenTK.Audio

即OpenAL(Open Audio Libary),是自由软件界的跨平台音效API。它设计用来表现多通道三维位置音效的特效。

(1)下载

可以通过访问OpenTK的主页www.OpenTK.com,下载最新版的OpenTK安装文件,如Windows平台下的OpenTK-2014-07-23.exe。

(2)安装

OpenTK是一个C#语言编写的库,需要Mono2.0及以上(Linux/Mac OS X/Windws)或.Net2.0及以上运行时(Windows)的环境支持,同时需要根据需求安装图象、音频等不同的设备驱动程序。安装文件有两种形式:Windows应用程序或zip压缩文件。

(3)生成解决方案

可以通过命令行或通过集成开发环境(VS2010及以上或MonoDevelop 2.4)来生成OpenTK项目的解决方案。在VS2010中,只需打开OpenTK项目点击生成菜单,即可完成项目的生成。OpenTK项目可以生成四种形式:发行版、调试版、Nsis版和文档版。

需要注意,OpenTK1.0的项目需要.NET中以下库System、

System.Data、System.Drawing、System.Windows.Forms、System.Xml。

  1. foreach语句

foreach语句用于枚举一个集合的元素。语法定义如下:

foreach  (数据类型  变量  in  数组名)

语句

使用foreach语句注意:

①  foereach语句中数据类型和变量组成一个临时带带变量声明。Foreach语句使用迭代变量来连续变数数组中的每一个元素;

②  对临时迭代变量的声明,其数据类型可以显示的声明为数组中元素的类型,也可以使用var关键字来隐式提供他的类型,然后由编译器根据数组的类型临时迭代变量的类型。

③  迭代变量是制只读的,不能被修改

第一:对于值类型的数组不能改变数组的数据

第二:对于引用类型的数组不能改变实际数据的引用,但是实际数据有可能通过迭代变量被修改;

④  Foreach语法格式中的语句是要为数组中的每一个元素执行一次的简单语句或语句块;

⑤  使用foreach语句遍历数组时,不需要设置循环条件,数组遍历更简单快捷,也更安全,尤其对于多为矩形数组的遍历,只需有一个foreach语句就可以实现。

使用foreach语句实现对一维数组的遍历的例子L:

int[] A = { 1, 2, 3, 4, 5, 6 };

foreach (int i in A)

Console.WriteLine(i);

Console.Read();

使用foreach语句实现求交错数组中所有元素的和

using System;

class ArraySum

{

Static void Main ()

{

Int sum=0;

Int [][] A= new int [2][];

A[0]=new int [4] {1,2,3,4};

A[1]=new int [6]{5,6,7,8,9,10};

foreach(int [] Arr in A)

foreach(int i in arr)

sum=sum+i;

Console.WriteLine(“ArraySum is {0} “,sum);

}

}

时间: 2024-10-11 10:12:22

2017-9-17C#笔记(方法,方法参数 ,foreach语句)的相关文章

CLR via C#深解笔记四 - 方法、参数、属性

实例构造器和类(引用类型) 构造器(constructor)是允许将类型的实例初始化为良好状态的一种特殊方法.构造器方法在“方法定义元数据表”中始终叫.ctor. 创建一个引用类型的实例时: #1, 首先为实例的数据字段分配内存 #2, 然后初始化对象的附加字段(类型对象指针和同步块索引) #3, 最后调用类型的实例构造器来设置对象的初始状态 构造引用类型的对象时,在调用类型的实例构造器之前,为对象分配的内存总是先被归零.构造器没有显示重写的所有字段保证都有一个0或null值.和其它方法不同,实

C# 方法和参数

/*方法和参数 * 1.c#的方法必须在某个类型当中 * 重要:一个类中的所有方法的签名必须具有唯一性:方法名,参数的数据类型,参数的数量这三个标准来定义唯一性:不包括返回类型:不包括参数的名称 * 2.可选参数的意思就是在声明方法的时候将常量值赋给参数,以后调用方法时就不必每个参数都指定: * 重要:所有的可选参数必须放在必须参数(无默认值)的后面,默认值必须是常量 * Date: 2015/2/5 * Time: 14:33 * 规范: * 1.开发者应侧重于可读性,而不是在写出更简短的代码

四、C#方法和参数

方法是一种组合一系列语句以执行一个特定操作或计算一个特殊结果的方式. 它能够为构成程序的语句提供更好的结构和组织. 在面向对象的语言中,方法总是和类关联在一起的,我们用类将相关的方法分为一组. 方法通过参数来用于从调用者向目标方法传递数据的变量. 方法也通过一个返回值将数据返回给调用者 一个方法调用由以下元素构成:命名空间.类型名称.方法名称.参数以及返回数据类型. 1.命名空间 命名空间是一种特殊的分类机制,它将与一个特定功能有关的所有类型都分组到一起. 编译器认为所有命名空间都在同一个级别上

方法可变参数

static void Main(string[] args) { //string[] str = { "", "" }; //TestParams(str); //TestParams("我","爱","北京","天安门!"); //TestParams(); Console.WriteLine("你好{0},{1},{2},{3},{4}","1&qu

用正则表达式去截取网页里文字的方法。参数为读取的网页源代码

//抓取文字方法,参数为网页源代码 public string ExtractText(string strHtml) { string result = strHtml; result = RemoveComment(result); //调用去掉注释等方法 result = RemoveScript(result); //调用去除js 方法 result = RemoveStyle(result); //调用去除样式表方法 result = RemoveTags(result); //调用去

Swift学习笔记(14)--方法

1.分类 方法分为实例方法和类型方法 实例方法(Instance Methods):与java中的类似,略 类型方法(Type Methods):与java.oc中的类方法类似.声明类的类型方法,在方法的func关键字之前加上关键字class:声明结构体和枚举的类型方法,在方法的func关键字之前加上关键字static. 方法的参数名参见学习笔记的函数章节 2.在实例方法中修改值类型和self 结构体和枚举是值类型.一般情况下,值类型的属性不能在它的实例方法中被修改. 但是,如果你确实需要在某个

C#方法的参数 Ref Out Params 4种类型的参数

转载:http://www.cnblogs.com/kissdodog/archive/2013/05/11/3072815.html 一.按值传递参数 值参数是通过将实参的值复制到形参,来实现按值传递到方法,也就是我们通常说的按值传递. 方法被调用时,CLR做如下操作: 1.在托管堆栈中为形参分配空间: 2.将实参的值复制到形参. 这个太常用了,按值传递参数,是复制一份,因此不影响原来参数的值. public class Program { static void Main(string[]

C++学习笔记24,方法重写与方法隐藏

该博文仅用于交流学习,请慎用于任何商业用途,本博主保留对该博文的一切权利. 博主博客:http://blog.csdn.net/qq844352155 转载请注明出处: 方法重写.是指在子类中重新编写父类中的虚函数的实现.要求子类中的函数必须跟父类中的原型一致. 包括返回值类型(协变返回类型不算)以及参数的数目,排列顺序. #include <iostream> #include <string> using namespace std; class base{ public: v

js学习笔记——数组方法

join() 把数组中所有元素转化为字符串并连接起来,并返回该字符串, var arr=[1,2,3]; var str=arr.join("#"); //str="1#2#3"; 如果没有指定分隔符,则默认为逗号 var str2=arr.join(); //str2="1,2,3"; reverse() 在原数组上把元素的顺序颠倒过来,并返回该数组 var arr=[1,2,3]; arr.reverse(); //arr=[3,2,1];