博文
修饰符的一个例子new virtual override sealed(2007-10-13 19:02:00)
摘要://与java不同,c#不允许使用对象实例调用静态方法,让我惊讶啊!!
//c++可不这样
using System;
using System.Collections.Generic;
using System.Text;
namespace __5
{
//class Program
//{
// static void Main(string[] args)
// {
// }
//}
abstract public class person
{
string name;
string ssn;
int age;
float salary;
public person(string name, string ssn, int age, float sal)
{
this.name = name;
 ......
学习C#静态函数及变量的一个精典例子(2007-10-13 15:27:00)
摘要://来自http://www.yaosansi.com/blog/article.asp?id=730
(1)用于对静态字段、只读字段等的初始化。
(2)添加static关键字,不能添加访问修饰符,因为静态构造函数都是私有的。
(3)类的静态构造函数在给定应用程序域中至多执行一次:只有创建类的实例或者引用类的任何静态成员才激发静态构造函数
(4)静态构造函数是不可继承的,而且不能被直接调用。
(5)如果类中包含用来开始执行的 Main 方法,则该类的静态构造函数将在调用 Main 方法之前执行。
任何带有初始值设定项的静态字段,则在执行该类的静态构造函数时,先要按照文本顺序执行那些初始值设定项。
(6)如果没有编写静态构造函数,而这时类中包含带有初始值设定的静态字段,那么编译器会自动生成默认的静态构造函数。
以下用例子代码进一步说明:
/**************************************************
* 静 态 构 造 函 数 练 习
* (1)①②③……为执行顺序
* (2)输出结果: static A()
* static B()
* X = 1, Y = 2
***************************************************/
using System;
class A
{
public static int ......
hellowin(2007-10-13 10:23:00)
摘要:#include<windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
static TCHAR szAppName[]=TEXT("HelloWin");
HWND hwnd; //窗口句柄
MSG msg; //消息结构,
WNDCLASS wndclass; //窗口类,是一个结构体,下面的这些都是结构体变量
wndclass.style=CS_HREDRAW | CS_VREDRAW;//类风格标识符
//这风格指定在窗口大小改变后,使整个窗口无效
wndclass.lpfnWndProc=WndProc; //lpfn前缀代表指向函数的指针,这里指向 窗口过程函数
wndclass.cbClsExtra=0; //cb前缀代表 count of bytes(字节数)
wndclass.cbWndExtra=0;//这两个域用于在类结构和Windows内部保存的窗口结构中预留一些额外空间
wndclass.hInstance=hInstance; //h前缀代表句柄,程序的实例句柄
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//为窗口设置的图标
//LoadIcon 获取预先定义的图标句柄,第一个参数为null,第二个参数标识图标
//如果是加载程序员定制的图标时(图标应该保存磁盘上的.EXE程序文件中)
//这个参数应该是程序的实例句柄hInstance
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BR......
c语言中 变长参数列表(2007-10-12 18:12:00)
摘要://转载自http://blog.csdn.net/Tilix/archive/2004/09/24/115873.aspx
建立参数个数不定的函数是可能的。如标准库函数printf,它的参数个数是不定的。虽然printf至少必须用一个字符串作为其第一个参数,但是它能够接收任何个数的附加参数。printf函数的原型为: int printf(const char *format, ...);该函数原型中的省略号(...)表示这个函数接收个数不定的任何类型的参数。注意省略号必须放在参数列表的最后。 变长参数头文件stdarg.h中的宏定义(见下表)课用来建立变长参数列表。下面给出的演示程序中给出了接收可变参数个数的函数average。函数average的第一个参数是要被求平均值的数据的个数。+-----------------------------------------------------------------------------+| 在头文件stdarg.h中定义的类型和宏 |+-----------------------------------------------------------------------------+| 标识苻 | 解释 | +----------+------------------------------------------------------------------+| va_list | 用来保存va_start, va_end所需信息的一种类型。为了访问变长参数列 || | 表中的参数,必须声明va_list类型的一个对象 | +----------+------------------------------------------------------------------+| va_start | 访问变长参数列表中的参数之前使用的宏,它初始化用va_list声明的 || | 的对象,初始化结果供宏va_arg 和va_end使用。 |+----------+------------------------------------------------------------------+| va_arg | 展开成一个表达式的宏,该表达式具有变长参数列表中下一个参数的 || | 值和类型......
格式化消息框 sprintf(2007-10-12 18:11:00)
摘要:#include<windows.h>
#include<tchar.h>
#include<stdio.h>
//格式化消息框
int CDECL MessageBoxPrintf(TCHAR* szCaption,TCHAR* szFormat,...)
{
TCHAR szBuffer[1024];
va_list pArgList; //或许只有va_list这种类型才能被设置为szFormat
va_start(pArgList,szFormat);//将pArgList设置为指向szFormat
_vsntprintf(szBuffer,sizeof(szBuffer)/sizeof(TCHAR),szFormat,pArgList);
//_vsntprintf 是sprintf加强版,多了个size_t count指明缓冲区的大小,保证不会有内存越界的错误。
va_end(pArgList);
return MessageBox(NULL,szBuffer,szCaption,0);
}
int WINAPI WinMain(HINSTANCE hlnstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
int cxScreen,cyScreen;
cxScreen=GetSystemMetrics(SM_CXSCREEN); //得到视频显示器的宽度
cyScreen=GetSystemMetrics(SM_CYSCREEN); //得到视频显示器的高度
MessageBoxPrintf(TEXT("ScmSize"),TEXT("The screen is % i pixels wide by % i pixels high."),
cxScreen,cyScreen);
return 0;
}
//在Windows程序中不能使用printf。
//&......
messagebox()(2007-10-12 16:01:00)
摘要:#include<windows.h>
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
MessageBox(NULL,TEXT("hello,windows 98!"),TEXT("helloMsg"),MB_ICONSTOP);
return 0;
}
//LPSTR lpCmdLine lp前缀代表长指针。也可改为 PSTR lpCmdLine,都是同一种类型,作为指向字符串的指针。另外前缀 i 表示int,sz表示 以零结束的字符串。
// #define WINAPI _stdcall 该语句指定一个约定,包括如何生成机器代码以及在堆栈中放置函数调用的参数,许多Windows函数调用声明为WINAPI
//HINSTANCE hInstance 实例句柄,该句柄唯一标识该程序。?搞不明白 谁传递给它参数?
//HINSTANCE hPrevInstance Windows早期版本中,同时运行同一程序多次时,您便创建了该程序的 多个实例。在32位Windows版本中,该概念已被抛弃。所以WinMain的第二个参数总是NULL(定义为0)
//LPSTR lpCmdLine 用于运行程序的命令行。某些Windows应用程序使用这个参数以在程序启动时将文件加载到内存。
//int nShowCmd 程序最初显示的方式。可以是正常地,或者是最大地,或者是最小化显示在任务列表栏中。
//MsgBox 第一个参数通常是窗口句柄,第二个参数是在消息框主体中显示的字符串,第三个参数是出现在消息框标题栏中的字符串。这些字符串都被封装在一个 TEXT 宏中,你不必将所有的字符串都封装在 TEXT 宏中,但如果想将您的程序转换为Unicode字符集,这确是个好注意。第四个参数是一组以前缀 MB_开始的常数的组合。
//MsgBox 有返回值,返回值为 相应的按钮值。......
dataset 合并(2007-10-12 09:03:00)
摘要:using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
namespace merge
{
class merge
{
static void Main(string[] args)
{
DataSet regularbooks = new DataSet("RegularBooks");
DataSet bestsellers = new DataSet("BestSellers");
DataTable regulartable = new DataTable("books");
DataTable sellertable = new DataTable("books");
DataColumn newcol = new DataColumn("ISBN",typeof(string));
regulartable.Columns.Add(......
图片验证码(2007-10-10 17:47:00)
摘要:using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.Drawing.Imaging;
using System.IO;
using System.Drawing;
public partial class image : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string tep = generateCheckCode(4);
HttpCookie a = new HttpCookie("image",tep);
Response.Cookies.Add(a);
//this.validatecode(tep);
this.CreateCheckCodeImage(tep);
}
//生成随机数
 ......
c#中的StringBuild类的使用(转)(2007-10-10 14:42:00)
摘要:c#中的StringBuild类的使用(转)
using System.Text;
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。
通过用一个重载的构造函数方法初始化变量,可以创建 StringBuilder 类的新实例,正如以下示例中所阐释的那样。
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
(一)设置容量和长度
虽然 StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是您可以为它可容纳的最大字符数指定一个值。此值称为该对象的容量,不应将它与当前 StringBuilder 对象容纳的字符串长度混淆在一起。例如,可以创建 StringBuilder 类的带有字符串“Hello”(长度为 5)的一个新实例,同时可以指定该对象的最大容量为 25。当修改 StringBuilder 时,在达到容量之前,它不会为其自己重新分配空间。当达到容量时,将自动分配新的空间且容量翻倍。可以使用重载的构造函数之一来指定 StringBuilder 类的容量。以下代码示例指定可以将 MyStringBuilder 对象扩充到最大 25 个空白。
StringBuilder MyStringBuilder = new StringBuilder("Hello World!", 25);
另外,可以使用读/写 Capacity 属性来设置对象的最大长度。以下代码示例使用 Capacity 属性来定义对象的最大长度。
MyStringBuilder.Capacity = 25;
(二)下面列出了此类的几个常用方法:
(1)Append 方法可用来将文本或......
随机生成数字字母(2007-10-10 14:19:00)
摘要:(1)
using System;
namespace ConsoleApplication1
{
class Class1
{
static void Main(string[] args)
{
Random random = new Random();
int a = random.Next(1, 10);
Console.WriteLine(a.ToString());
Console.ReadLine();
}
}
}
(2)
//stringbuilder 是我加的,不要每次都生成一个新对象浪费空间。
public string GenerateCheckCode()
{
int number;
char code;
string checkCode = String.Empty;
StringBuilder checkcode = new StringBuilder();
&nb......