Archive for the ‘program’ Category

c#中“躲在幕后”的ToString方法

11月 11th, 2009

在c#中的object这个对象中,最常用的(也是最常被覆载)的方法,当属ToString()方法,在派生类继承object类中ToString()方法,如果派生类没有覆载ToString()方法,那么当调用ToString()方法时,只是输出类名,当覆载之后,才能输出用户自定义的内容。

在console.writeline方法中,一般认为该方法接受字符串参数,其实他已经被覆载的可以接受任意对象作为其参数,当一个对象引用被传入,writeline方法会自动调用该对象的tostring方法来得到该类的字符串表示,并输出到控制台。

c#常量知识点总结

11月 10th, 2009

做完一个小项目后,发现自己的c#的基础知识有点缺失了,现在补一补,总结一下c#中常量的知识:

常量的声明方式: public const  datatype  name = value   

  •  常量隐含式静态的,所以不能再在声明上加上static关键字,如果试图是这样做,编译无法进行。
  • 在声明一个常量的时候必须给定一个值,不能在声明常量后又在程序的其他位置修改它的值
  • 常量的命名符合Pascal命名风格
  • 常量的值必须是在编译的时候可以计算的表达式。例如 public const int   a = 123+456 可以通过编译,而public const int a = Math.Sqrt(2.0);就无法通过编译,因为Math.Sqrt是一个方法,只能在运行时被调用。
  • 常量的类型必须是预定义数值类型(char,int,double,float,byte等)或者是string类型

 

[转载]JMF系统介绍

08月 13th, 2009

一.简介 
1.1JMF 体系结构简介
在开发JMF 应用程序之前要完全理解JMF 的体系架构、接口和类。就拿我们的家用摄像机系统作个例子。首先用摄像机拍摄内容,拍摄下来的内容录制在DV带中。DV带可以放在放像机里播放、放像机提 供视频信号给电视机,提供音频信号给音箱,这样我们就可以在电视机上看到画面,从音箱里听到声音。JMF API 提供的也是同样的模型。 Read more »

终于搞清楚了c#中的事件和委托

07月 25th, 2009

c#中的事件和委托,今天可算给搞明白了。比较高兴。嘿嘿。
理解c#中的事件和委托,关键还是要理解委托。要明白多播委托是怎么个玩意儿。现在把我自己写得一个例子,贴出来让大家看看,如果有什么不对的地方,希望指正。
狗饿 狗叫 给吃的。
public class Starter
{
public static void Main()
{
dog dog1 = new dog();
dog1.dogbark += new bark(Handler);
dog1.hungry();
}
public static void Handler(object o, DogEventArgs e)
{
Console.WriteLine(”给你一根骨头,吃吧。”);
}
}

public delegate void bark(object o, DogEventArgs e);
public class dog
{
public event bark dogbark;

public void hungry()
{
if (dogbark != null)
{
DogEventArgs args = new DogEventArgs();
dogbark(this, args);
}
}
}
public class DogEventArgs : EventArgs
{
}

其中我们将狗叫理解成引起事件的原因,狗叫理解成事件,给吃的理解成事件处理函数。对应代码就是:hungry()函数是引起事件的发生。dogbark是事件,Handler是事件处理程序。

c# 多线程编程 <转>

05月 22nd, 2009

一.多线程的概念

Windows是一个多任务的系统,如果你使用的是windows 2000及其以上版本,你可以通过任务管理器查看当前系统运行的程序和进程。什么是进程呢?当一个程序开始运行时,它就是一个进程,进程所指包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的,线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。浏览器就是一个很好的多线程的例子,在浏览器中你可以在下载JAVA小应用程序或图象的同时滚动页面,在访问新页面时,播放动画和声音,打印文件等。

多线程的好处在于可以提高CPU的利用率——任何一个程序员都不希望自己的程序很多时候没事可干,在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。

然而我们也必须认识到线程本身可能影响系统性能的不利方面,以正确使用线程:

线程也是程序,所以线程需要占用内存,线程越多占用内存也越多
多线程需要协调和管理,所以需要CPU时间跟踪线程
线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题
线程太多会导致控制太复杂,最终可能造成很多Bug Read more »

进入ASP.NET的学习领域

05月 17th, 2009

最近一周进入了ASP.NET的学习中,把《visual studio 2005从入门到精通》看了个大概,也没明白个究竟,看来这本书还就是让你会操作visual studio的,而不是讲知识的。不过发现自己在接触新的东西的时候,往往在没有老师的指点下,一般都是撞得“头破血流”之后自己才有了如梦初醒的感觉。之后老师在那么一讲解,就有醍醐灌顶的感觉了。最近一周的生活有点混乱,每天都到晚上3点钟才睡着。早上的时间基本上就没办法利用。

我的英语啊,要考四级呀。英语还是要背诵的,必须抽出时间读英语。这是必要的。不然四级铁定考不过,以后再看个英文的技术文章,就不用每每的拿着个词典在那查啊查的了。在博客里面新开个英语的栏目,把我背诵过得,写过的文章发一下,惊醒一下自己吧。

c#的所涉及的范畴,学了已经多过半个学期了。有了一个大概。如果现在让我做一个winform我想,我自己肯定做不出来,现在心里对winform也没有很清晰的轮廓。就凭课本那本书还远远的不够,多看书,看经典教材。争取自己做一个桌面程序出来,自己看看。心里也有个底。还是要理解面向对象。深入的理解。

ADO.NET类介绍(原创)

04月 10th, 2009

.NET Framework数据提供程序用于连接数据库,执行命令和检索结果,使得可以直接处理检索到的结果,或将其放入ADO.NET的DataSet对象中,以便与来自多个源的数据或在层之间进行远程处理的数据组合在一起,以特殊身份为用户提供。
ADO.NET支持的数据访问方式及其命名空间。

Read more »

实现遍历目录的递归算法(c#实现)

04月 9th, 2009

无需过多的解释了,好代码,理解清楚就ok了。

 public void PopulateTreeView(string directoryValue, TreeNode parentNode)
        {
            string[] directoryArray = Directory.GetDirectories(directoryValue);
            try
            {
                if (directoryArray.Length != 0)
                {
                    foreach (string directory in directoryArray)
                    {
                        substringDirectory = 
directory.Substring(directory.LastIndexOf('\\') + 1, 
directory.Length - directory.LastIndexOf('\\') - 1);
                        TreeNode myNode = new TreeNode(substringDirectory);
                        parentNode.Nodes.Add(myNode);
                        PopulateTreeView(directory, myNode);
                    }
                }
            }
            catch (UnauthorizedAccessException)
            {
                parentNode.Nodes.Add("Access denied");
            }
        }

(转)c#中委托与事件

03月 21st, 2009

最近在博客园中看到的一篇好文章,也是唯一让我从委托和事件的迷魂阵中绕出来的好文章,推荐一下–http://www.cnblogs.com/jimmyzhang/archive/2007/09/23/903360.html

引言

委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。

Read more »