博文

修饰符的一个例子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;
          ......

阅读全文(1885) | 评论:0

学习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 ......

阅读全文(1611) | 评论:0

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......

阅读全文(2474) | 评论:0

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 | 展开成一个表达式的宏,该表达式具有变长参数列表中下一个参数的 || | 值和类型......

阅读全文(2138) | 评论:0

格式化消息框 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。 //&......

阅读全文(2716) | 评论:0

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 有返回值,返回值为 相应的按钮值。......

阅读全文(1991) | 评论:0

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(......

阅读全文(2812) | 评论:0

图片验证码(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);     }
    //生成随机数
  ......

阅读全文(2292) | 评论:0

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 方法可用来将文本或......

阅读全文(3371) | 评论:0

随机生成数字字母(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......

阅读全文(3615) | 评论:0