![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
文章平均质量分 55
mydriverc
技术为本
展开
-
C#面试基础问题
C#面试基础问题 English Version: http://dflying.dflying.net/1/archive/104_c_basic_interview_questions.html如果你的简历上面写“熟悉/了解C#”,那么你就应该能够回答下面的这些基础问题。我将给出自己的简要答案以供参考。欢迎讨论。如果是“精通”,那么请参考:http://www.cnblogs.com/转载 2007-06-22 01:01:00 · 864 阅读 · 1 评论 -
C#异常处理机制初步
一、C#的异常处理所用到关键字 try 用于检查发生的异常,并帮助发送任何可能的异常。 catch 以控制权更大的方式处理错误,可以有多个catch子句。 finally 无论是否引发了异常,finally的代码块都将被执行。 throw 用于引发异常,可引发预定义异常和自定义异常。 二、C#异常处理的格式 try { 程序代码块; } catch(Exception e) { 异常处理代码块;转载 2007-06-27 17:25:00 · 783 阅读 · 0 评论 -
c# .net中的类型转换
看到一篇类型转换的文章好的很.Mark 一下 1. 装箱、拆箱还是别名许多 C#.NET 的书上都有介绍 int -> Int32 是一个装箱的过程,反之则是拆箱的过程。许多其它变量类型也是如此,如:short Int16,long Int64 等。对于一般的程序员来说,大可不必去了解这一过程,因为这些装箱和拆箱的动作都是可以自动完成的,不需要写代码进行干预。但是我们需要记住转载 2007-07-11 10:41:00 · 1415 阅读 · 0 评论 -
WIN32中颜色值(COLORREF)与.NET中颜色值(Color)的转换
如果使用MFC与.NET混合编程,就会遇到这个问题,通过MFC编写的控件,由.NET调用,则控件中背景色的设置,需要颜色的转换。COLORREF类型颜色的值COLORREF cr=RGB(123,200,12); 其中的R、G、B三个分量的排列顺序是BGR。.NET中通过数据类型Color表示颜色,该类有一个函数FromArgb(int,int,int),可以通过输入RGB三个值得到一转载 2007-07-11 16:46:00 · 807 阅读 · 0 评论 -
C#中用Form实现浮动工具栏(转)_
今天才发觉微软XX的在.net 2003里边没给提供浮动工具栏控件,没办法google了一下只找到几个第三方的控件,要付费不过功能倒是挺强悍。考虑一下偶只是需要一个简单的浮动条,不至于用到那些太多的牛x功能,自己动手丰衣足食吧! 基本思路,用一个无text,ControlBox=false的窗体,设置其top属性为true作为该工具条的载体 在窗体MouseDown,Mouse转载 2007-07-11 16:59:00 · 3428 阅读 · 0 评论 -
用ImessageFilter接口实现截获键盘消息
IMessageFilter 接口 I MessageFilter 接口允许应用程序在消息被调度到控件或窗体之前捕获它。 可以将实现 IMessageFilter 接口的类添加到应用程序的消息泵中,以在消息被调度到控件或窗体之前将 它筛选出来或执行其他操作。若要将消息筛选器添加到应用程序的消息泵中,请使用 Application 类中的 AddMessageFilter 方法。 Applicat转载 2007-07-12 13:37:00 · 943 阅读 · 0 评论 -
C#的消息处理方法
在C#中,程序采用了的驱动采用了事件驱动而不是原来的消息驱动,虽然.net框架提供的事件已经十分丰富,但是在以前的系统中定义了丰富的消息对系统的编程提供了方便的实现方法,因此在C#中使用消息有时候还是大大提高编程的效率的。 1 定义消息 在c#中消息需要定义成windows系统中的原始的16进制数字,比如 const int WM_Lbutton = 0x201; /转载 2007-07-12 13:40:00 · 740 阅读 · 0 评论 -
C#中窗体之间的数据传递 ----尤其是事件那个好好看看
对于窗体间的数据传递,是刚开始从事.Net窗体应用程序开发人员碰到的一个常见问题,在此讲几个常见的实现方式。此节内容适用于模式窗体或非模式窗体,部分方式延伸到一般类的操作。(1)构造函数参数传递通过构造函数传递参数应该是比较基本的参数传递方式,重载构造函数,通过带参数的构造函数来实例化窗体。在窗体类内部定义参数变量, private object myParams; 实现构造函数, public转载 2007-07-11 13:27:00 · 4029 阅读 · 1 评论 -
用ImessageFilter实现截获键盘动作
IMessageFilter 接口 IMessageFilter 接口允许应用程序在消息被调度到控件或窗体之前捕获它。 可以将实现 IMessageFilter 接口的类添加到应用程序的消息泵中,以在消息被调度到控件或窗体之前将 它筛选出来或执行其他操作。若要将消息筛选器添加到应用程序的消息泵中,请使用 Application 类中的 AddMessageFilter 方法。转载 2007-07-12 13:45:00 · 809 阅读 · 0 评论 -
Java和C#的访问修饰符
C#的访问修饰符: Public:可被所属类和成员以及不属于类的成员访问.所修饰类的成员可在任何情况下通过类的对象和类成员被使用.所修饰的类类型 可在任何情况下被类的访问级别的类继承. Internal:可被当前程序集访问 所修饰类的成员在统一”解决方案”里的使用与Public相同(与命名空间无关).出了解决方案则转载 2007-07-16 14:10:00 · 637 阅读 · 0 评论 -
C#的访问修饰符
访问修饰符 访问限制 public 访问不受限制 protected internal 访问限于这个程序,或者派生类转载 2007-07-16 14:12:00 · 581 阅读 · 0 评论 -
Effective C# 原则26:用IComparable和IComparer实现对象的顺序关系
Effective C# 原则26:用IComparable和IComparer实现对象的顺序关系Item 26: Implement Ordering Relations with IComparable and IComparer你的类型应该有一个顺序关系,以便在集合中描述它们如何存储以及排序。.Net框架为你提供了两个接口来描述对象的顺序关系:IComparable 和ICompar转载 2007-07-19 11:20:00 · 1001 阅读 · 0 评论 -
委托和事件
C#中的委托类似于C或C++中的函数指针,但两者有本质的区别:C和C++中的函数指针仅仅是一个内存地址,其中不包含任何有关函数、返回值以及调用约定等方面的信息,所以他不是类型安全的;但是C#中的委托面向对象,而且是类型安全的。时间是对象发出的消息的触发动作,.net框架中的事件是基于委托模型的。 编译器对于所声明的委托会自动生成一个类,所有委托都从System.Delegate继承而来。转载 2007-04-23 11:31:00 · 625 阅读 · 0 评论 -
C#中的预处理指令,你用了多少?
C#中的预处理指令 作为预处理中的一对:#region name ,#endregion可能是大家使用得最多的,我也常用它来进行代码分块,在一个比较长的cs文件中,这么做确实是一件可以让你使代码更清晰的好办法,VS也自动用这个来包含自动生成的代码,它这么做既可以使开发人员更清晰的查看自己的代码,也开了一个好头,使更多人使用#region。 C#中还有好几对预处理指令,可能大家就用得比较少了。 #d转载 2007-04-23 15:30:00 · 549 阅读 · 0 评论 -
将关闭窗口改为隐藏
private void GisForm_FormClosing(object sender, FormClosingEventArgs e) { e.Cancel = true; this.Hide(); }必须是这样写.如果没有第一句代码 e.Cancel = t转载 2007-07-24 14:48:00 · 759 阅读 · 0 评论 -
C#里的委托和事件实现
一、委托的简介1、委托的声明: delegate HandlerName ([parameters])例如:public delegate void PrintHandler(string str); 委托声明定义了一种类型,它用一组特定的参数以及返回类型来封装方法。对于静态方法,委托对象封装要调用的方法。对于实例方法,委托对象同时封装一个实例和该实例上的一个方法。如果您有一个委托对象转载 2007-04-23 11:24:00 · 740 阅读 · 0 评论 -
c#·委托&事件
委托:类似于C++中的函数指针,封闭了具有相同特征和返回类型的方法,实现事件回调机制 委托声明:访问修饰字 delegate 返回类型 委托名称 ([参数列表]) 实例化委托:委托类型 实例名称 = new 委托类型(表达式);其中表达式可以是:引用的类静态方法名、引用的类实例的实例方法名、另一个委托 委托调用:[名称限定.]委托实例名([参数列表])转载 2007-04-23 12:01:00 · 733 阅读 · 0 评论 -
C#事件
简介 任何编写过图形用户界面(GUI)软件的开发人员都熟悉事件处理编程,当用户与GUI控制进行交互时(例如点击表格上的按钮),作为上述事件的反应,就会执行一个或多个方法。没有用户的参与,事件也可能执行。事件处理程序是对象的方法,是根据应用程序中发生的事件而执行的。为了理解.Net框架下的事件处理模式,我们需要理解代理的概念。 C#中的代理 C#中的代理允许我们将一个类中的方法传递给其他类的对象原创 2007-04-23 14:50:00 · 565 阅读 · 0 评论 -
关于C#静态构造函数的几点说明 [转]
静态构造函数是C#的一个新特性,其实好像很少用到。不过当我们想初始化一些静态变量的时候就需要用到它了。这个构造函数是属于类的,而不是属于哪里实例的,就是说这个构造函数只会被执行一次。也就是在创建第一个实例或引用任何静态成员之前,由.NET自动调用。 class SimpleClass{ // Static constructor static SimpleClass()转载 2007-04-23 14:57:00 · 629 阅读 · 0 评论 -
C# Hashtable
Hashtable 一,哈希表(Hashtable)简述 在.NET work中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/的键值对,其中key通常可用来快速查找,同时key是区分大小写;用于存储对应于key的值。Hashtable中key/键值对均为object类型,所以Hashtable可以支持任何类型的key/键值对.二,哈希转载 2007-07-25 12:25:00 · 1562 阅读 · 0 评论 -
C#基础概念二十五问
注:本文部份资料来自网络,如有侵权,请与我联系,我会在第一时间声明引用或将其删除! 当初学 C# 时是找个人大概问了一下数据类型和分支语句就开始做项目了。这两天又全面的看了一下相关的基础知识(学而时习之嘛),总结了25个问题:1.静态成员和非静态成员的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.i转载 2007-04-24 10:44:00 · 521 阅读 · 0 评论 -
接口名字的显式限定 -- 接口名字的隐藏
11接口名字的隐藏 几个不同的接口的实现---每个接口都可能含有大量的成员-----可能很快会使你的类的public名称空间遭到那些在实现类的作用域以外没有意义的成员的污染.(----也就是说并不是继承的接口的所有函数都必须暴露给外边,有的不需要暴露,只是自己内部使用)你可以防止接口中被实现的成员成为该类的public成员,这就用到成为名字隐藏)(name hiding)的技术.原创 2007-08-01 15:06:00 · 821 阅读 · 0 评论 -
接口名字的显式限定---避免名字模糊性
interface ISerialize{void SaveData();} interface IDataStore{void SaveData();}class Test:ISerialize,IDataStore{ public void SaveData(){ .......}}虽然可以通过编译,但是运行的时候都会有错误产生,因为原创 2007-08-01 15:21:00 · 611 阅读 · 0 评论 -
名字空间
(1)名字空间是可以嵌套的;namespace N1{ namespace N2 { class Sample { } }}等同于namespace N1.N2{ class Sample { }}(2)名字空间不能使用访问修饰符号来修饰,但是他其实默认采用了public修饰符。转载 2007-08-01 15:22:00 · 641 阅读 · 0 评论 -
多线程如何传递参数
C#中的多线程函数是不允许有参数的, 如果要实现参数传递,你可以通过类内的其它属性或域的方式把参数传递进要执行的函数体内 注意,不要忘记使用lock函数, 线程调用的类的方法不能有返回值和参数。你通过定义新类并设置该类的属性或字段值把参数传入。如果要调用控件等,可以在构造函数里传入。你可以把新开的线程封装到一个类中,如: pub转载 2007-08-01 15:43:00 · 1373 阅读 · 0 评论 -
using指示符
(1) 别名;所谓别名就是为某个名字空间或者类型定义一个别名,这样在这个名字空间但中,凡是遇到这个别名指的就是那个名字空间或者类型。下面是一个简单的例子。namespace N1.N2{ class A { }} namespace N3{ using A = N1.N2.A; class B:A { }}上面的例子的第二转载 2007-08-01 14:55:00 · 596 阅读 · 0 评论 -
C#中静态构造函数的学习
(1)用于对静态字段、只读字段等的初始化。 (2)添加static关键字,不能添加访问修饰符,因为静态构造函数都是私有的。 (3)类的静态构造函数在给定应用程序域中至多执行一次:只有创建类的实例或者引用类的任何静态成员才激发静态构造函数 (4)静态构造函数是不可继承的,而且不能被直接调用。 (5)如果类中包含用来开始执行的 Main 方法,则该类的静态构造函数将在转载 2007-08-01 16:03:00 · 534 阅读 · 0 评论 -
C# base
//下面的这个是base分别对父系的构造函数的不同的引用方式.using System;namespace temp{ class Program { static void Main(string[] args) { temp2 t = new temp2(100); t.showInfo();转载 2007-08-06 13:59:00 · 1577 阅读 · 1 评论 -
类数组,莫要忘了实例化
List[] layernameList=new List[_ceng]; List[] grouplyrList=new List[_ceng]; for (int j = 0; j { layernameList[j]=new List; g原创 2007-08-06 14:07:00 · 633 阅读 · 0 评论 -
C#中ref和out的使用小结
转载 2007-08-07 13:27:00 · 719 阅读 · 0 评论 -
参数声明方式
ref双向传递变量,变量在被传递之前,必须进行初始化out 只是用于输出,在传递给方法之前,不必进行初始化params参数声明方式--可变长度参数列表 namespace ConsoleApplication1{ class Program { public static void UseParams(params int[] list) {原创 2007-05-09 14:18:00 · 1009 阅读 · 0 评论 -
包装和拆包
包装用来把值类型转换为object类型(引用类型).而拆包(unboxing)则用来把object类型转换为值类型 包装一个值时,就会首先分配一个object实例,然后在把该值父复制到新创建的对象中。原创 2007-05-09 16:55:00 · 878 阅读 · 0 评论 -
在java中null与""有什么区别----所有的语言都是这样子
在数据是未知数或者无法使用时,大多数的数据库管理系统将存储一个叫做Null值的特殊值。不要将它和零(一个合法数值)、零长度串(不含有字符的一种串数据类型)或空格字符混淆起来。SQL-3标准中把一个Null定义为: “...一个用来指明任何数据值都不存在的一个特殊值...” SQLServer中有一个空值调用函数: ISNULL 功能:使用指定的替换值替换 NULL。 语法 ISNULL ( che转载 2007-08-06 15:09:00 · 967 阅读 · 0 评论 -
C#中ref和out的区别
最近在许多论坛上看到关于了ref和out的区别,发现解释的都不非常理想。 我想抄写点官方的解释,然后再来我自己的解释 //如下方法参数上的 out 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。 当希望方法返回多个值时,声明 out 方法非常有用。使用 out 参数的方法仍然可以返回一个值。一个方法可以有一个以上的转载 2007-08-07 13:26:00 · 3539 阅读 · 11 评论 -
索引器
索引器(Indexer)是C#引入的一个新型的类成员,它使得对象可以像数组那样被方便,直观的引用。索引器非常类似于我们前面讲到的属性,但索引器可以有参数列表,且只能作用在实例对象上,而不能在类上直接作用。 下面是典型的索引器的设计,我们在这里忽略了具体的实现。 class MyClass{ public object this [int index] {转载 2007-08-09 14:00:00 · 698 阅读 · 0 评论 -
c#与C++
C++被设计为一种低级的、 与 平台无关的、面向对象的语言;C#则被设计成一种完全建立在.NET框架平台上的高级语言,它的所有类型都是从.NEt框架提供的同一类库中派生的,并且所有的功能都依赖于这个类库 在C++中可以进行一些比较低级的操作;而C#就不能进行这些低级的操作,这些低级的操作是由.NET框架来完成的, C#本身则集中于完成比较高级的操作。 在,net托管环境下,当用原创 2007-05-09 13:46:00 · 583 阅读 · 0 评论 -
预处理指令细节
预处理指令后面没有分号#define 和#undef 必须出现在文件的开始处#warning和#error后面的文字没有引号#line用来用于指定所在位置的行号,并且可以改变文件名 #line 100 "pro.cs"#error 出现了错误哈哈哈回在下面的窗口中显示,第100行 出现了错误哈哈哈原创 2007-05-09 14:28:00 · 542 阅读 · 0 评论 -
访问修饰符(C# 编程指南)
msdn 可以限制类和结构,以便只有声明它们的程序或命名空间才能使用它们。可以限制类成员,以便只有派生类才能使用它们,或者限制类成员,以便只有当前命名空间或程序中的类才能使用它们。访问修饰符是添加到类、结构或成员声明的关键字,用以指定这些限制。这些关键字包括 public、private、protected 和 internal。例如:public class Bicycle{转载 2007-05-11 16:13:00 · 547 阅读 · 0 评论 -
protected ----我惊了
protected 关键字是一个成员访问修饰符。受保护成员在它的类中可访问并且可由派生类访问。 仅当访问通过派生类类型发生时,基类的受保护成员在派生类中才是可访问的。例如,请看以下代码段:// protected_keyword.csusing System;class A{ protected int x = 123;}class B : A{原创 2007-05-11 16:46:00 · 588 阅读 · 0 评论 -
C#入门 类的方法
如果类中使用了abstract方法,则类也必须使用修饰符abstract如果子类隐藏了父类中的非虚拟方法,则在这个方法之前必须使用new如果子类想隐藏父类中的虚拟方法,则必须使用new,如果要覆盖父类中虚拟方法,则必须使用override 可以看出C#比C++这方面要求严格多了。namespace hide{ abstract class A{ pu原创 2007-05-09 15:23:00 · 558 阅读 · 0 评论