CSharp学习笔记(视图).
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{ HINSTANCE hDllInst = LoadLibrary(“youApp.DLL”); if(hDllInst) { typedef DWORD (WINAPI *MYFUNC)(DWORD,DWORD); MYFUNC youFuntionNameAlias = NULL; // youFuntionNameAlias 函数别名 youFuntionNameAlias = (MYFUNC)GetProcAddress (hDllInst,”youFuntionName”); // youFuntionName 在 DLL 中声明的函数名 if(youFuntionNameAlias) { youFuntionNameAlias(param1,param2); } FreeLibrary(hDllInst); } } class ExecuteRectangle { static void Main(string[] args) { Rectangle r = new Rectangle(); r.Acceptdetails(); r.Display(); Console.ReadLine(); } } } 当上面的代码被编译和执行时,它会产生下列结果: Length: 4.5 Width: 3.5 Area: 15.75 using 关键字 在任何 C# 程序中的第一条语句都是: using System; using 关键字用于在程序中包含命名空间。一个程序可以包含多个 using 语句。 class 关键字 class 关键字用于声明一个类。 C# 中的注释 注释是用于解释代码。编译器会忽略注释的条目。在 C# 程序中,多行注释以 /* 开始,并 以字符 */ 终止,如下所示: /* This program demonstrates The basic syntax of C# programming Language */ 单行注释是用 '//' 符号表示。例如:
"r+" 以读/写方式打开文件,如无文件出错 "w+" 以读/写方式打开文件,如无文件生成新文件 一个文件可以以文本模式或二进制模式打开, 这两种的区别是: 在文本模式中回车被当 成一个字符'/n',而二进制模式认为它是两个字符 0x0D,0x0A;如果在文件中读到 0x1B,文 本模式会认为这是文件结束符, 也就是二进制模型不会对文件进行处理, 而文本方式会按一 定的方式对数据作相应的转换。 系统默认的是以文本模式打开,可以修改全部变量_fmode 的值来修改这个设置,例如 _fmode=O_TEXT;就设置默认打开方式为文本模式;而_fmode=O_BINARY;则设置默认打 开方式是二进制模式。 我们也可以在模式字符串中指定打开的模式,如"rb"表示以二进制模式打开只读文件, "w+t"或"wt+"表示以文本模式打开读/写文件。 此函数返回一个 FILE 指针,所以申明一个 FILE 指针后不用初始化,而是用 fopen()来 返回一个指针并与一个特定的文件相连,如果成败,返回 NULL。 FILE *fp; if(fp=fopen("123.456","wb")) puts("打开文件成功"); else puts("打开文件成败"); 2.fclose() fclose()的功能就是关闭用 fopen()打开的文件, 其原型是: int fclose(FILE *fp);如果成功, 返回 0,失败返回 EOF。 在程序结束时一定要记得关闭打开的文件, 不然可能会造成数据丢失的情况, 我以前就 经常犯这样的毛病。 例:fclose(fp); 3.fputc() 向流写一个字符,原型是 int fputc(int c, FILE *stream); 成功返回这个字符 , 失败返回 EOF。 4.fgetc() 从流中读一个字符,原型是 int fputc(FILE *stream); 成功返回这个字符,失败返回 EOF。 5. fseek() 此函数一般用于二进制模式打开的文件中,功能是定位到流中指定的位置,原型是 int fseek(FILE *stream, long offset, int whence); 如果成功返回 0 ,参数 offset 是移动的字符数, whence 是移动的基准,取值是 符号常量 值 基准位置 SEEK_SET 0 文件开头 SEEK_CUR 1 当前读写的位置 SEEK_END 2 文件尾部 例:fseek(fp,1234L,SEEK_CUR);//把读写位置从当前位置向后移动 1234 字节(L 后缀表 示长整数) fseek(fp,0L,2);//把读写位置移动到文件尾 6.fputs() 写一个字符串到流中,原型 int fputs(const char *s, FILE *stream); 例:fputs("I Love You",fp); 7.fgets()
C# 基本语法 C# 是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种相互交互的对 象组成。相同种类的对象通常具有相同的类型,或者说,是在相同的 class 中。 例如,以 Rectangle(矩形)对象为例。它具有 length 和 width 属性。根据设计,它可能 需要接受这些属性值、计算面积和显示细节。 让我们来看看一个 Rectangle(矩形)类的实现,并借此讨论 C# 的基本语法: using System; namespace RectangleApplication { class Rectangle { // 成员变量 double length; double width; public void Acceptdetails() { length = 4.5; width = 3.5; } public double GetArea() { return length * width; } public void Display() { Console.WriteLine("Length: {0}", length); Console.WriteLine("Width: {0}", width); Console.WriteLine("Area: {0}", GetArea()); } } [C++]调用 DLL 有两种方法——静态调用和动态调用 (一).静态调用其步骤如下: 1.把你的 youApp.DLL 拷到你目标工程(需调用 youApp.DLL 的工程)的 Debug 目录下; 2.把你的 youApp.lib 拷到你目标工程(需调用 youApp.DLL 的工程)目录下; 3.把你的 youApp.h(包含输出函数的定义)拷到你目标工程(需调用 youApp.DLL 的工程)目 录下; 4.打开你的目标工程选中工程,选择 Visual C++的 Project 主菜单的 Settings 菜单; 5.执行第 4 步后,VC 将会弹出一个对话框,在对话框的多页显示控件中选择 Link 页。然 后在 Object/library modules 输入框中输入:youApp.lib 6.选择你的目标工程 Head Files 加入:youApp.h 文件; 7.最后在你目标工程(*.cpp,需要调用 DLL 中的函数)中包含你的:#include “youApp.h” 注:youApp 是你 DLL 的工程名。 (二).动态调用其程序如下: 动态调用时只需做静态调用步骤 1.
}//end class Rectangle typedef struct { int level; /* fill/empty level of buffer */ unsigned flags; /* File status flags */ char fd; /* File descriptor */ unsigned char hold; /* Ungetc char if no buffer */ int bsize; /* Buffer size */ unsigned char _FAR *buffer; /* Data transfer buffer */ unsigned char _FAR *curp; /* Current active pointer */ unsigned istemp; /* Temporary file indicator */ short token; /* Used for validity checking */ } FILE; /* This is the FILE object */ 复制代码 FILE 这个结构包含了文件操作的基本属性,对文件的操作都要通过这个结构的指针来 进行,此种文件操作常用的函数见下表 函数 功能 fopen() 打开流 fclose() 关闭流 fputc() 写一个字符到流中 fgetc() 从流中读一个字符 fseek() 在流中定位到指定的字符 fputs() 写字符串到流 fgets() 从流中读一行或指定个字符 fprintf() 按格式输出到流 fscanf() 从流中按格式读取 feof() 到达文件尾时返回真值 ferror() 发生错误时返回其值 rewind() 复位文件定位器到文件开始处 remove() 删除文件 fread() 从流中读指定个数的字符 fwrite() 向流中写指定个数的字符 tmpfile() 生成一个临时文件流 tmpnam() 生成一个唯一的文件名 下面就介绍一下这些函数 1.fopen() fopen 的原型是:FILE *fopen(const char *filename,const char *mode),fopen 实现三个功 能 为使用而打开一个流 把一个文件和此流相连接 给此流返回一个 FILR 指针 参数 filename 指向要打开的文件名,mode 表示打开状态的字符串,其取值如下表 字符串 含义 "r" 以只读方式打开文件 "w" 以只写方式打开文件 "a" 以追加方式打开文件
Baidu Nhomakorabea
从流中读一行或指定个字符,原型是 char *fgets(char *s, int n, FILE *stream); 从流中读 取 n-1 个字符,除非读完一行,参数 s 是来接收字符串,如果成功则返回 s 的指针,否则返 回 NULL。 fgets(str1,4,file1); 则执行后 str1="Lov",读取了 4-1=3 个字符,而如果用 fgets(str1,23,file1); 则执行 str="Love ,I Have",读取了一行(不包括行尾的'/n')。 8.fprintf() 按格式输入到流,其原型是 int fprintf(FILE *stream, const char *format[, argument, ...]); 其用法和 printf()相同,不过不是写到控制台,而是写到流罢了 例:fprintf(fp,"%2d%s",4,"Hahaha"); 9.fscanf() 从流中按格式读取,其原型是 int fscanf(FILE *stream, const char *format[, address, ...]); 其用法和 scanf()相同,不过不是从控制台读取,而是从流读取罢了。 例:fscanf(fp,"%d%d" ,&x,&y); 10.feof() 检测是否已到文件尾,是返回真,否则返回 0,其原型是 int feof(FILE *stream); 例:if(feof(fp))printf("已到文件尾"); 11.ferror() 原型是 int ferror(FILE *stream);返回流最近的错误代码, 可用 clearerr()来清除它, clearerr() 的原型是 void clearerr(FILE *stream); 例:printf("%d",ferror(fp)); 12.rewind() 把当前的读写位置回到文件开始,原型是 void rewind(FILE *stream);其实本函数相当于 fseek(fp,0L,SEEK_SET); 例:rewind(fp); 13.remove() 删除文件,原型是 int remove(const char *filename); 参数就是要删除的文件名,成功返 回 0。 14.fread() 从 流 中 读 指 定 个 数 的 字 符 , 原 型 是 size_t fread(void *ptr, size_t size, size_t n, FILE *stream);参数 ptr 是保存读取的数据,void*的指针可用任何类型的指针来替换, 如 char*、 int *等等来替换;size 是每块的字节数;n 是读取的块数,如果成功,返回实际读取的块数(不 是字节数),本函数一般用于二进制模式打开的文件中。 char x[4230]; FILE *file1=fopen("c://msdos.sys","r"); fread(x,200,12 ,file1);//共读取 200*12=2400 个字节 15.fwrite() 与 fread 对应, 向流中写指定的数据, 原型是 size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream);参数 ptr 是要写入的数据指针, void*的指针可用任何类型的指针来替换, 如 char*、int *等等来替换;size 是每块的字节数;n 是要写的块数,如果成功,返回实际写入 的块数(不是字节数),本函数一般用于二进制模式打开的文件中。 例: char x[]="I Love You";