这一章节我们继续类型擦除的话题,我们将通过对照数组与泛型容器,观察类型擦除给泛型容器带来什么问题? 1.数组 package com.ray.ch13; public class Test { public static void main(String[] args) { Fruit[] fruits = new Apple[5]; fruits[0] = new Apple(); fruits[1] = new Fuji(); fruits[2] = new Fruit(); } } cla…
基础部分被我分为了2篇,因为实在太多了,但是每一个知识点我都不舍得删除,所以越写越多,这一篇博客整理了4个夜晚,内容有点多建议慢慢看.本章涵盖以下主题: 介绍C# 理解C#的基础知识 使用变量 处理空值 下一章进一步探索控制台应用程序. 2.1) 介绍C# 1.C#1.0 C#1.0于2002年发布,其中包括了静态类型的面向对象编程语言的所有重要特性,本书第一大部分所有章节都会介绍这些特性. 2.C#2.0 C#2.0是在2005年发布的,重点是使用泛型实现强数据类型,以提高代码性能.减少类型错…
2.3变量 var 类型推断 type 类的分类 如:type nametype = name.GetType(); //取变量name的类型 const 常量  const int painame = 3.1415 char 是字符类型 string是字符串类型 2.5语句 选择语句:switch(变量){case 常量值1:语句1 break;…………;default 常量值n:语句2 break;} 二个值相同语句时:switch(变量){case 常量值1:case 常量值1:语句1 b…
(一)DLR C#4的动态功能是Dynamic Language Runtime(动态语言运行时,DLR)的一部分.DLR是添加到CLR的一系列服务. (二)dynamic类型 dynamic类型允许编写忽略编译期间的类型检查的代码.编译器假定,给dynamic类型的对象定义的任何操作都是有效的,在运行之前编译器不会检测是否存在错误. 例子: dynamic person = "人"; string firstName = person.FirstName; 这两行代码能够通过编译器编…
一.函数wait和waitpid 今天我们继续通过昨天那个死爹死儿子的故事来讲(便于记忆),现在看看wait和waitpid函数. #include<sys/wait.h> pid_t wait(int *statloc); pid_t waitpid(pid_t pid , int *statloc , int options);  若成功,返回进程ID,若出错,返回0或-1 wait系列函数的作用就是通知父亲儿子的死讯的,父进程一般接收到SIGCHLD信号而调用wait,(等待终止),可能…
(一)身份验证和授权 安全性的两个基本支柱是身份验证和授权.身份验证是标识用户的过程,授权在验证了所标识用户是否可以访问特性资源之后进行的. 1.标识和Principal 使用标识可以验证运行应用程序的用户.Principal是一个包含用户的标识和用户所属角色的对象. AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); var principal = WindowsPrincipal.Curr…
这一篇是接上一篇笔记的第二部分. 2.5深入研究控制台应用程序 前面创建并使用了基本的控制台应用程序,下面更深入地研究它们. 控制台应用程序是基于文本的,在命令上运行的.它们通常执行需要编写脚本的简单任务,例如编译文件或加密配置文件的一部分. 2.5.1向用户显示输出 控制台应用程序执行的两个最常见的任务是写入和读取数据.前者使用WriteLine方法来输出数据,但是,如果不希望行的末尾有回车符,那么可以使用Write方法. 1.使用编号的位置参数进行格式化 生成格式化字符串的一种方法是使用编号…
(一)运算符 类别 运算符 算术运算符 + - * / % 逻辑运算符 & | ^ ~ && || ! 字符串连接运算符 + 增量和减量运算符 ++ -- 移位运算符 << >> 比较运算符 == != < > <= >= 赋值运算符 = += -= *= /= %= &= |= ^= <<= >>= 成员访问运算符(用于对象和结构) . 索引运算符(用于数组和索引器) [] 类型转换运算符 () 条件…
(一)类和结构 类和结构实际上都是创建对象的模板,每个对象都包含数据,并提供了处理和访问数据的方法. 类和结构的区别:内存中的存储方式.访问方式(类是存储在堆上的引用类型,结构是存储在栈的值类型)和它们的一些特征(如结构不支持继承). 较小的数据建议使用结构来提高性能. 创建类使用 class 关键字 例子: class ClassTest { } 创建结构使用 struct 关键字 例子: struct StructTest { } 对于类和结构,都是用关键字new来声明实例:这个关键字创建对…
为何引入泛型 当我们要对不同类型的参数执行类似的方法时:如下所示功能打印传入参数的相关信息. class CommonMethdod { /// <summary> /// show int /// </summary> public static void ShowParam(int iParam) { Console.WriteLine($"this is {typeof(CommonMethdod)},type={iParam.GetType().Name},par…