- 方法:
方法作为类中最常见的最有用的一个成员,算是完成特定任务,实现特定任务的重要的编程模式.
“更少的代码,更多的复用”
(有些教程中,将方法称为函数,函数和方法没有本质的区别,但是通常自己写的俄实现特定的功能的代码块,叫做方法;有系统简介或者直接生成的不完整的代码块叫做函数.)
方法定义的一般形式:
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();
}
}
}
- 方法的参数
方法参数的本质是为了在调用者和方法之间实现数据的交换,是方法接口的重要组成部分。
形式参数简称形参,指的是方法定义时方法头中的形式参数,这些形式参数在方法未被调用时不占据内存的存储单元,只为了描述方内的处理机制u,其目的是用来接收调用该方法时传入的参数。形式参数是属于方法本身的变量,其初值来源于方法的调用,只有在程序执行过程中调用了该方法,形参才有可能得到具体的值,并参与运算,执行方法的功能。
- 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。
- 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);
}
}