C#项目学习记录
1, Visual Studio Code 添加VS 2017的开发人员命令提示符---C#编译环境
2, C#编译器和CLI的安装
注意:自己的电脑上配置环境变量时,配置在系统变量的Path中并没有效果,(只)配置在用户变量中却有效果。
C:\Windows\Microsoft.NET\Framework64\v4.0.30319
3, C#程序结构分析实例
不仅是结构分析,代码本身的 栈 类,也要仔细分析下,很有意思。1000的item里有个属性是next,指向了100的item,100的item的next属性又指向了10的item......
首先,我们来输入一段C#程序
using System;
namespace Acme.Collections
{
public class Stack
{
Entry top;
public void Push(object data) {
top = new Entry(top, data);
}
public object Pop() {
if (top == null) throw new InvalidOperationException();
object result = top.data;
top = top.next;
return result;
}
class Entry
{
public Entry next;
public object data;
public Entry(Entry next, object data) {
this.next = next;
this.data = data;
}
}
}
}在名为Acme.Collections 的命名空间中声明了一个名为Stack 的类。Acme.Collections.Stack 是此类的完全限定名。该类包含几个成员:一个名为top 的字段,两个分别名为Push 和Pop 的方法和一个名为Entry 的嵌套类。Entry 类还包含三个成员:一个名为next 的字段、一个名为data 的字段和一个构造函数。假定将此示例的源代码存储在文件acme.cs 中,执行以下命令行:csc /t:library acme.cs,将此示例编译为一个库(没有Main 入口点的代码),并产生一个名为acme.dll 的程序集。程序集包含中间语言(Intermediate Language, IL) 指令形式的可执行代码和元数据(metadata) 形式的符号信息。在执行程序集之前,.NET 公共语言运行时的实时(JIT) 编译器将程序集中的IL 代码自动转换为特定于处理器的代码。由于程序集是一个自描述的功能单元,它既包含代码又包含元数据,因此,C# 中不需要#include 指令和头文件。若要在C# 程序中使用某特定程序集中包含的公共类型和成员,只需在编译程序时引用该程序集即可。例如,下面的程序将使用来自acme.dll 程序集的Acme.Collections.Stack 类:
using System;
using Acme.Collections;
class Test
{
static void Main() {
Stack s = new Stack();
s.Push();
s.Push();
s.Push();
Console.WriteLine(s.Pop());
Console.WriteLine(s.Pop());
Console.WriteLine(s.Pop());
}
}如果此程序存储在文件test.cs 中,那么在编译test.cs 时,可以使用编译器的/r 选项引用acme.dll 程序集:
csc /r:acme.dll test.cs
这样将创建名为test.exe 的可执行程序集,运行结果如下:
100
10
1
C# 允许将一个程序的源文本存储在多个源文件中。在编译多个文件组成的C# 程序时,所有源文件将一起处理,并且源文件可以自由地相互引用— 从概念上讲,就像是在处理之前将所有源文件合并为一个大文件。C# 中从不需要前向声明,因为除了极少数的例外情况,声明顺序无关紧要。C# 不限制一个源文件只能声明一个公共类型,也不要求源文件的名称与该源文件中声明的类型匹配。通过上述分析,对你查阅MSDN的文档将有一定的帮助,不会再因为那些什么恼人的类啊,方法啊发愁了。
4,C#解析xml相关:
当xml中带有命名空间时(无论此命名空间是默认的还是有别名的),使用xmlDocument的selectNodes()等方法时需要传入第二个参数,即命名空间管理器。命名空间的名字可以自己随意取,只要在 xpath(即selectNodes()的第一个参数)中能对应起来就可以。比如,原始的xml 有个命名空间 xmlns:o="http://www.a.com", 我们可以这么使用:
XmlDocument xmlRelDoc = new XmlDocument();
xmlRelDoc.Load(relXmlPath); XmlNamespaceManager nsp = new XmlNamespaceManager(xmlRelDoc.NameTable);
nsp.AddNamespace("y", "http://www.a.com");//这里的y是自己随便取得,只要在下面xPath中也使用相同的名称就可以了。
同样,如果原始的xml的命名空间就只是默认的 xmlns="http://www.b.com", 我们在调用selectNodes()方法的时候(必须)也要给它起个别名(随意取),然后在下面xPath中使用此别名 XmlNodeList relationNodes = xmlRelDoc.SelectNodes("//y:Relationship", nsp)2, //表示后代, 如a//b 表示a节点后代的所有b节点
5,
6,
C#项目学习记录的更多相关文章
- 01-Flutter移动电商实战-项目学习记录
一直想系统性的学习一下 Flutter,正好看到该课程<Flutter移动电商实战>的百度云资源,共 69 课时,由于怕自己坚持不下去(经常学着学着就不学了),故采用博客监督以记之. 1. ...
- Flutter移动电商实战 --(1)项目学习记录
1.项目相关截图 2.项目知识点梳理图 Dio2.0: Dio是一个强大的 Dart Http 请求库,支持 Restful API.FormData.拦截器.请求取消等操作. Swiper: Swi ...
- 天猫SSM项目学习记录(一)----第一个相对完整的SSM项目
来源: http://how2j.cn/k/tmall_ssm/tmall_ssm-1516/1516.html?p=78908 目的:记录一个相对完整的SSM项目模板 1.工具:idea2018商 ...
- 开源项目Material Calendar View 学习记录 (一)
开源项目Material Calendar View 学习记录 Github: https://github.com/prolificinteractive/material-calendarview ...
- java开源项目之IQQ学习记录之项目环境搭建与启动
本文链接地址:http://blog.csdn.net/sushengmiyan/article/details/18779727 作者:sushengmiyan 现在就码字说说今天晚上搞定的一个项目 ...
- Quartz 学习记录1
原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...
- UWP学习记录12-应用到应用的通信
UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...
- UWP学习记录10-设计和UI之控件和模式7
UWP学习记录10-设计和UI之控件和模式7 1.导航控件 Hub,中心控件,利用它你可以将应用内容整理到不同但又相关的区域或类别中. 中心的各个区域可按首选顺序遍历,并且可用作更具体体验的起始点. ...
- UWP学习记录7-设计和UI之控件和模式4
UWP学习记录7-设计和UI之控件和模式4 1.翻转视图 使用翻转视图浏览集合中的图像或其他项目(例如相册中的照片或产品详细信息页中的项目),一次显示一个项目. 对于触摸设备,轻扫某个项将在整个集合中 ...
随机推荐
- 使用themeleaf页面技术时,在JavaScript代码中使用for循环报错.....
解决方法: 在for循环前加上/* <![CDATA[ */,在for循环后加/* ]]> */,这样就能正常解析了:如下 /* <![CDATA[ */ for (var i = ...
- 小A与小B-(双向bfs)
链接:https://ac.nowcoder.com/acm/contest/549/G来源:牛客网 题目描述 小A与小B这次两个人都被困在了迷宫里面的两个不同的位置,而他们希望能够迅速找到对方,然后 ...
- JS实现将数字金额转换为大写人民币汉字
function convertCurrency(money) { //汉字的数字 var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', ...
- AXI
1.Cachable和bufferable 一个Master发出一个读写的request,中间要经过很多Buffer,最后才能送到memory.这些Buffer的添加是为了outstanding,ti ...
- hdu 3065 AC自动机 标记数组不清零
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3065 题目里面要我们计算每种单词出现的次数,重叠的也要计算,那么我们在查找的时候不要把标记单词结尾的 ...
- Arrays和String单元测试-20175218
Arrays和String单元测试 一.题目 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt split Arra ...
- excel 上传读写到数据库
<HTML> <div class="input-group"> <form id="abc" action="http ...
- Linux console 重定向
Linux从启动到启动完成的所有输出均复制到Com口上,一共需要修改3个文件.在此之前还要确认/sbin/agetty文件是否存在,此文件用来把系统的输入输出映射到其它设备上. 1.首先在 /etc/ ...
- Unity 3D 如何修改新建脚本中的 C# 默认创建的 Script 脚本格式
首先在Unity的安装路径下找到 Unity5\Editor\Data\Resources\ScriptTemplates路径的(81-C# Script-NewBehaviourScript.cs. ...
- Tomcat服务相关配置
安装服务: 进入安装目录-> bin ,在空白处按住shift+鼠标右键 ->在此处运行DOS命令窗口,将service.bat文件拖拽到命令窗口中,按enter键运行, 出现了“Usag ...