随笔分类 - 语言相关 / C#
C#的豆知识
摘要:今天在学可空类型的时候,看见两个关键字——implicit和explicit。 public static implicit operator T? (T value); public static explicit operator T(T? value); 这两个关键字是一对用于类型转换的关键字
阅读全文
摘要:作用:在第一次使用类之前,用静态构造函数来初始化封闭类中一些静态变量。 示例: public class Car : Product { private readonly static string _productType; public static string ProductType { g
阅读全文
摘要:对于没有类型约束的泛型,其类型参数可以指定为任意类型。 例如List<T>,其类型参数T是值类型(List<int>)或引用类型(List<object>)。 有时候,我们希望泛型的类型参数只能是值类型或引用类型,这时就该论到类型约束上场了。 约束要放到泛型方法或泛型类型声明的末尾,并由关键字whe
阅读全文
摘要:通过将变量o声明为静态类型dynamic(类型是静态的,对该类型的处理是动态的),编译器会对o的几乎所有处理都区别对待,将所有绑定决策(如Length的含义)留给运行时。 dynamic d = "hello"; Console.WriteLine(d.Length);// 打印结果:5 d = n
阅读全文
摘要:对于要求泛型类型参数为父类型,允许赋值类型参数为子类型值的这种情况,称为协变。 对于要求泛型类型参数为子类型,允许赋值类型参数为父类型值的这种情况,称为逆变。 结论:逆变、协变是方法参数、返回值类型的转换与对委托方法的包装。应属于多态的一种形式。 引用:https://www.cnblogs.com
阅读全文
摘要:装箱 是指将值类型转换为引用类型,如下: int a = 10;//a的类型是结构体system.Int32,结构体是值类型Object o = a;//o的类型是类system.Object, 类是引用类型 拆箱 是指将装箱的引用类型转换为值类型。 int b = (int)o;//将o强转为值类
阅读全文
摘要:List<>是除了数组外,我最常用的泛型容器,与C++的vector类似,是顺序结构而不是链式结构。 LinkedList<> 是C#中的泛型链表,与C++的list类似,是链式结构。 Dictionary<> 是C#的泛型hash表 HashTable 是C#的hash表,但键值对都是object
阅读全文
摘要:答案是有的。 尽管抽象类不能直接进行实例化,但是继承类会调用该抽象类的构造函数。如果没有手动定义一个构造函数,编译器会自动为其创建一个无参,访问等级为protected的构造函数。 另外,如果手动为抽象类创建一个无参或有参的构造函数,编译器将不再自动创建构造函数,并且如果只有有参且参数没有默认值的构
阅读全文
摘要:在类(外部类)的内部声明的类称为内部类。如果与其他成员的访问性类似,私有(private)的内部类,只能在外部类里进行实例化,公共(public)的内部类则所有类均可调用,interal和protected也同理。 内部类:若外部类是静态类,则内部类能访问外部类的一切成员。若外部类是普通类,则内部类
阅读全文
浙公网安备 33010602011771号