![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
文章平均质量分 58
wenjie847
这个作者很懒,什么都没留下…
展开
-
C#中Attribute和Property的区别
参考:Attribute在.net编程中的应用(一) http://dudu.cnblogs.com/articles/4450.htmlAttribute在.net编程中的应用(二) http://dudu.cnblogs.com/articles/4450.html 1)Attribute是编译时实例化的,Property是运行时实例化的2)Attribute是原创 2010-01-18 16:00:00 · 517 阅读 · 0 评论 -
abstract 是什么意思?
abstract 修饰符可以用于类、方法、属性、事件和索引指示器(indexer),表示其为抽象成员 abstract 不可以和 static 、virtual 一起使用 声明为 abstract 成员可以不包括实现代码,但只要类中还有未实现的抽象成员(即抽象类),那么它的对象就不能被实例化,通常用于强制继承类必须实现某一成员 using System;using Syste转载 2010-01-20 15:21:00 · 1058 阅读 · 0 评论 -
Sealed 修饰符的作用
用于类时,表示该类不能再被继承,不能和 abstract 同时使用,因为这两个修饰符在含义上互相排斥用于方法和属性时,表示该方法或属性不能再被继承,必须和 override 关键字一起使用,因为使用 sealed 修饰符的方法或属性肯定是基类中相应的虚成员通常用于实现第三方类库时不想被客户端继承,或用于没有必要再继承的类以防止滥用继承造成层次结构体系混乱恰当的利用 sealed 修饰符转载 2010-01-20 14:48:00 · 472 阅读 · 0 评论 -
接口的多继承会带来哪些问题?
C# 中的接口与类不同,可以使用多继承,即一个子接口可以有多个父接口。但如果两个父成员具有同名的成员,就产生了二义性(这也正是 C# 中类取消了多继承的原因之一),这时在实现时最好使用显式的声明 using System;using System.Collections.Generic;using System.Text;namespace Example17转载 2010-01-20 14:30:00 · 1748 阅读 · 1 评论 -
new 修饰符是起什么作用?
new 修饰符与 new 操作符是两个概念new 修饰符用于声明类或类的成员,表示隐藏了基类中同名的成员。而new 操作符用于实例化一个类型new 修饰符只能用于继承类,一般用于弥补基类设计的不足new 修饰符和 override 修饰符不可同时用在一个成员上,因为这两个修饰符在含义上互相排斥 using System;using System.Collections.转载 2010-01-20 14:27:00 · 620 阅读 · 0 评论 -
静态成员和非静态成员的区别?
静态变量使用 static 修饰符进行声明,在类被实例化时创建,通过类进行访问不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问一个类的所有实例的同一静态变量都是同一个值,同一个类的不同实例的同一非静态变量可以是不同的值静态函数的实现里不能使用非静态成员,如非静态变量、非静态函数等访问静态变量,不需要实例化 using System原创 2010-01-20 15:31:00 · 543 阅读 · 0 评论 -
internal 修饰符起什么作用?
internal 修饰符可以用于类型或成员,使用该修饰符声明的类型或成员只能在同一程集内访问接口的成员不能使用 internal 修饰符值得注意的是,如果为 internal 成员加上了 protected 修饰符,这时的访问级别为 internal 或 protected。只是看字面意思容易弄错,许多人认为 internal protected 应该是“只有同一个程序集中的子类可以访问”转载 2010-01-20 15:14:00 · 1060 阅读 · 0 评论 -
类和结构的区别?
类:类是引用类型在堆上分配,类的实例进行赋值只是复制了引用,都指向同一段实际对象分配的内存类有构造和析构函数类可以继承和被继承结构:结构是值类型在栈上分配(虽然栈的访问速度比较堆要快,但栈的资源有限放),结构的赋值将分配产生一个新的对象。结构没有构造函数,但可以添加。结构没有析构函数结构不可以继承自另一个结构或被继承,但和类一样可以继承自接口 示例:根据以上转载 2010-01-20 14:33:00 · 312 阅读 · 0 评论 -
StringBuilder和String区别
String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String另外,对于 String 我们不得不多说几句:1.它是引用类型,在堆上分配内存2.运算时会产生一个新的实例3.String 对象一旦生成不可改变(Immutable)3原创 2010-01-20 13:49:00 · 293 阅读 · 0 评论 -
一个很好的关于多态的题目
abstract class BaseClass { public virtual void MethodA() { Console.WriteLine("Base.A"); } public virtual void MethodB() { C原创 2010-01-20 16:38:00 · 1014 阅读 · 0 评论 -
const 和 static readonly 区别?
用 const 修饰符声明的成员叫常量,是在编译期初始化并嵌入到客户端程序static readonly用 static readonly 修饰符声明的成员依然是变量,只不过具有和常量类似的使用方法:通过类进行访问、初始化后不可以修改。但与常量不同的是这种变量是在运行期初始化 测试类:using System;using System.Collections.Gen转载 2010-01-20 15:26:00 · 349 阅读 · 0 评论 -
extern 是什么意思?
extern 修饰符用于声明由程序集外部实现的成员函数经常用于系统API函数的调用(通过 DllImport )。注意,和DllImport一起使用时要加上 static 修饰符也可以用于对于同一程序集不同版本组件的调用(用 extern 声明别名)不能与 abstract 修饰符同时使用 using System;using System.Collections.Ge转载 2010-01-20 15:23:00 · 807 阅读 · 0 评论 -
接口可以包含哪些成员?
接口可以包含属性、方法、索引指示器和事件,但不能包含常量、域、操作符、构造函数和析构函数,而且也不能包含任何静态成员完整的接口定义查看:http://blog.csdn.net/wenjie847/archive/2010/01/20/5217078.aspx转载 2010-01-20 14:41:00 · 3764 阅读 · 0 评论 -
explicit 和Implicit 区别
在弄清楚这两个关键字的区别之前,得需要搞清楚另外一个关键字:operator.Operator MSDN 解释:使用 operator 关键字来重载内置运算符,或提供类或结构声明中的用户定义转换。也就是说: Operator具有两种功能,1)运算符重载 2)用户定义类的转换,也就是操作符转换。这里只说 操作符转换,比如我定义了下面一个类(代码来自MSDN) class Di原创 2010-01-19 15:27:00 · 3039 阅读 · 0 评论 -
可变参数Params代码实例
static void Main(string[] args) { UseParams( "a", "b", "c"); UseParams("d", 100, 33.2, new double[] { 1.1, 1.2 }); } public static void UseParam原创 2010-01-19 14:34:00 · 348 阅读 · 0 评论 -
什么是反射
反射:运行时获取程序集的各种信息,如程序集、模块、类型、字段、属性、方法和事件。可以动态实例化对象,并且对其执行操作 下面一个例子:创建一个程序集 private string name; private int age; //如果显式的声明了无参数构造函数,客户端只需要用程序集的CreateInstance即可实例化该类原创 2010-01-19 14:14:00 · 345 阅读 · 0 评论 -
Equals 和==的区别
对于值类型,如果对象的值相等,则相等运算符 (==) 返回 true,否则返回 false。对于string 以外的引用类型,如果两个对象引用同一个对象,则 == 返回 true。对于 string 类型,== 比较字符串的值。 ==操作比较的是两个变量的值是否相等。 equals()方法比较的是两个对象的内容是否一致.equals也就是比较引用类型是否是对同一个对象的引用。 对原创 2010-01-18 16:07:00 · 259 阅读 · 0 评论 -
泛型的概念及优点
在早期的C#版本,通用化是通过在类型与通用基类型 <a id="ctl00_MTCS_main_ctl01" onclick="function onclick(){Track(ctl00_MTCS_main_ctl00|ctl00_MTCS_main_ctl01,this);}" href="http://msdn.microsoft.com/zh-cn/library/s原创 2010-01-25 10:59:00 · 630 阅读 · 0 评论