随笔分类 -  语言相关

记录编程语言相关的知识。
摘要:作用:在第一次使用类之前,用静态构造函数来初始化封闭类中一些静态变量。 示例: public class Car : Product { private readonly static string _productType; public static string ProductType { g 阅读全文
posted @ 2021-10-25 15:44 mshentai 阅读(74) 评论(0) 推荐(0)
摘要:对于没有类型约束的泛型,其类型参数可以指定为任意类型。 例如List<T>,其类型参数T是值类型(List<int>)或引用类型(List<object>)。 有时候,我们希望泛型的类型参数只能是值类型或引用类型,这时就该论到类型约束上场了。 约束要放到泛型方法或泛型类型声明的末尾,并由关键字whe 阅读全文
posted @ 2021-10-22 16:56 mshentai 阅读(1107) 评论(0) 推荐(0)
摘要:通过将变量o声明为静态类型dynamic(类型是静态的,对该类型的处理是动态的),编译器会对o的几乎所有处理都区别对待,将所有绑定决策(如Length的含义)留给运行时。 dynamic d = "hello"; Console.WriteLine(d.Length);// 打印结果:5 d = n 阅读全文
posted @ 2021-10-20 15:08 mshentai 阅读(382) 评论(0) 推荐(0)
摘要:对于要求泛型类型参数为父类型,允许赋值类型参数为子类型值的这种情况,称为协变。 对于要求泛型类型参数为子类型,允许赋值类型参数为父类型值的这种情况,称为逆变。 结论:逆变、协变是方法参数、返回值类型的转换与对委托方法的包装。应属于多态的一种形式。 引用:https://www.cnblogs.com 阅读全文
posted @ 2021-10-15 16:50 mshentai 阅读(50) 评论(0) 推荐(0)
摘要:装箱 是指将值类型转换为引用类型,如下: int a = 10;//a的类型是结构体system.Int32,结构体是值类型Object o = a;//o的类型是类system.Object, 类是引用类型 拆箱 是指将装箱的引用类型转换为值类型。 int b = (int)o;//将o强转为值类 阅读全文
posted @ 2021-10-13 18:45 mshentai 阅读(68) 评论(0) 推荐(0)
摘要:NC7 买卖股票的最好时机 方法的时间复杂度O(n),空间复杂度O(1) int maxProfit(vector<int>& prices) { //当前利润 int curProfit = 0; //当前最大利润 int result = 0; for (int i = 1; i < price 阅读全文
posted @ 2021-09-18 08:45 mshentai 阅读(69) 评论(0) 推荐(0)
摘要://给出一组区间,请合并所有重叠的区间。 //请保证合并后的区间按区间起点升序排列。 //区间结构体 struct Interval { int start; int end; Interval() : start(0), end(0) {} Interval(int s, int e) : sta 阅读全文
posted @ 2021-08-20 10:45 mshentai 阅读(901) 评论(0) 推荐(0)
摘要:构造函数的作用是初始化实例的非静态(static)数据成员,以及在函数体内的一些由程序员指定的工作。 析构函数的作用则与构造函数相反,是将实例所动态申请的资源(在函数体内由程序员控制,如果操作不当,将造成内存泄漏),并销毁实例的非静态(static)数据成员。 构造函数的函数名与类名相同,没有返回值 阅读全文
posted @ 2021-08-08 16:30 mshentai 阅读(132) 评论(0) 推荐(0)
摘要:List<>是除了数组外,我最常用的泛型容器,与C++的vector类似,是顺序结构而不是链式结构。 LinkedList<> 是C#中的泛型链表,与C++的list类似,是链式结构。 Dictionary<> 是C#的泛型hash表 HashTable 是C#的hash表,但键值对都是object 阅读全文
posted @ 2021-07-17 20:32 mshentai 阅读(2075) 评论(0) 推荐(0)
摘要:priority_queue是C++的优先队列,优先队列是指具有在出队时,最高优先级的元素先出特征的队列。 其头文件为#include <queue> priority_queue操作与queue类似,但priority_queue在入队和出队时会对内部元素按规则进行排序。 其定义为 templat 阅读全文
posted @ 2021-07-16 09:35 mshentai 阅读(420) 评论(0) 推荐(0)
摘要:const与指针的组合,可能会稍微有点令人困扰。 const的作用是限定一个对象为常量,在定义const 对象后, 对象的值在程序中将不能被改变。 指针*是一种对象(用来存储其他对象的内存地址),它可以指向另外一个对象。 如果const与指针组合起来,const是限定指针对象,还是限定指针指向的对象 阅读全文
posted @ 2021-07-03 19:45 mshentai 阅读(63) 评论(0) 推荐(0)
摘要:刷题——支持加减乘三种运算和括号的计算器 以"12+(2*(3-4))*5"为例子,利用递归的方法。 //以"12+(2*(3-4))*5"为例子 int solve(string s) { //返回对应数值 if (s.empty()) return 0; else { int result = 阅读全文
posted @ 2021-06-25 11:07 mshentai 阅读(267) 评论(0) 推荐(0)
摘要:答案是有的。 尽管抽象类不能直接进行实例化,但是继承类会调用该抽象类的构造函数。如果没有手动定义一个构造函数,编译器会自动为其创建一个无参,访问等级为protected的构造函数。 另外,如果手动为抽象类创建一个无参或有参的构造函数,编译器将不再自动创建构造函数,并且如果只有有参且参数没有默认值的构 阅读全文
posted @ 2021-06-23 19:55 mshentai 阅读(1047) 评论(0) 推荐(0)
摘要:刷题——进制转换 将十进制的整数转换成其他进制的整数 由于十六进制的数值带有字符的,所以返回的值为字符串。 /* 进制转换 * @param M int整型 给定整数 * @param N int整型 转换到的进制 * @return string字符串 */ string solve(int M, 阅读全文
posted @ 2021-06-23 15:13 mshentai 阅读(172) 评论(0) 推荐(0)
摘要:对于简单类型,如int、char、float等的没有析构函数的类型,在申请动态数组时, char* a = new char[10]; delete a; 和 char* a = new char[10]; delete [] a; 之间的并没有区别。 但是对于复杂类型,即类型里申请了动态内存,需要 阅读全文
posted @ 2021-04-22 11:14 mshentai 阅读(247) 评论(0) 推荐(0)
摘要:在类(外部类)的内部声明的类称为内部类。如果与其他成员的访问性类似,私有(private)的内部类,只能在外部类里进行实例化,公共(public)的内部类则所有类均可调用,interal和protected也同理。 内部类:若外部类是静态类,则内部类能访问外部类的一切成员。若外部类是普通类,则内部类 阅读全文
posted @ 2021-03-16 18:38 mshentai 阅读(1405) 评论(0) 推荐(0)