问题解答集

目录

问题解答集    1

目录    2

修订历史纪录    3

1 什么是.net    4

1.1    .net的定义    4

1.2 什么是C#    4

1.3    C#与C,C++的相同之处    5

2 有关Update程序    6

2.1 WinFormButton控件的使用    6

2.2 double类型的变量保留固定位数的小数部分    7

2.3 如何使用浏览文件夹和确定保存地址    7

2.4 如何读取本地的.txt 文件    7

2.5 如何调用.exe文件    7

2.6 如何获取.exe文件所在地址    8

2.7 如何获取下载文件的大小    8

2.8 如何实现具有断点续传功能的文件下载    8

2.9 ProgressBar的使用    13

2.10 在Xml文件中修改节点    13

1 什么是.net

  1. .net的定义

NET Framework是Microsoft为开发应用程序而创建的一个富有革命性的新平台。

这句话最有趣的地方是它的含糊不清,但这是有原因的。首先,注意这句话没有说"在Windows操作系统上开发应用程序"。尽管.NET Framework的Microsoft版本运行在Windows操作系统上,但以后将推出运行在其他操作系统上的版本,例如Mono,它是.NET Framework的开发源代码版本(包含一个C#编译器),该版本可以运行在几个操作系统上,包括各种Linux版本和Mac OS。许多这类项目正在开发,在读者阅读本书时可能就已发布了。另外,还可以在个人数字助手(PDA)类设备和一些智能电话上使用Microsoft .NET Compact Framework(基本上是完整 .NET Framework的一个子集)。使用.NET Framework的一个主要原因是它可以作为集成各种操作系统的方式。

另外,上面给出的.NET Framework定义并没有限制应用程序的类型。这是因为本来就没有限制。.NET Framework可以创建Windows应用程序、Web应用程序、Web服务和其他各种类型的应用程序。

.NET Framework的设计方式保证它可以用于各种语言,包括本书要介绍的C#语言,以及C++、Visual Basic、JScript,甚至一些旧的语言,如COBOL。为此,还推出了这些语言的.NET版本,目前还在不断推出更多的.NET版本的语言。所有 这些语言都可以访问.NET Framework,它们还可以彼此交互。C#开发人员可以使用Visual Basic程序员编写的代码,反之亦然。

所有这些提供了意想不到的多样性,这也是.NET Framework具有诱人前景的部分原因

1.2 什么是C#

C#(读做 "C sharp",中文译音"夏普")是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言,并定于在微软职业开发者论坛(PDC)上登台亮相.C#是微软公司研究员Anders Hejlsberg的最新成果.C#看起来与Java有着惊人的相似;它包括了诸如单一继承,界面,与Java几乎同样的语法,和编译成中间代码再运行的过程.但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角.

  1. C#与C,C++的相同之处

编译:程序直接编译成标准的二进制可执行形式.但C#的源程序并不是被编译成二进制可执行形式,而是一中中间语言,类似于JAVA字节码。如果前面的Hello World程序被保存成一个文本文件并被命名为Hello.cs,它将被编译成命名Hello.exe的可执行程序.

结构体:一个C#的结构体与C++的结构体是相似的,因为它能够包含数据申明和方法.但是,不象C++,C#结构体与类是不同的而且不支持继承.但是,与Java相同的是,一个结构体可以实现界面.

预编译:C#中存在预编译指令支持条件编译,警告,错误报告和编译行控制.可用的预编译指令有:

#define

#undef

#if

#elif

#else

#endif

#warning

#error

#line []

没有了#include 伪指令.你无法再用#define 语句对符号赋值,所以就不存在源代码替换的概念--这些符号只能用在#if和#elif伪指令里.在#line伪指令里的数字(和可选的名字)能够修改行号还有#warning和#error输出结果的文件名.

操作符重载:一些操作符能够被重载,而另一些则不能.特别的是,没有一个赋值运算符能够被重载.能够被被重载的单目操作符是:

+ - ! ~ ++ -- true false

能够被重载的二元运算符是:

+ - * / % & | ^ << >> == != > < >= <=

2 有关Update程序

2.1 WinForm中Button控件的使用

button下的 this.Text = "what..."; 可以改变窗口标题。

button下的Message.Show("what..."); 可以弹出对话框,对话框中显示其中文字。button下的Application.Exit; 单击后推出程序。

2.2 将double类型的变量保留固定位数的小数部分

System.Math.Round(double型变量,保留位数)。

2.3 如何使用浏览文件夹和确定保存地址

浏览(button)和位置(textBox)代码

    private void button2_Click(object sender, System.EventArgs e)

{

    if    (this.folderBrowserDialog1.ShowDialog()==DialogResult.OK)

    {

        this.textBox1.Text=folderBrowserDialog1.SelectedPath.ToString();

    }    

}

2.4 如何读取本地的.txt 文件

FileStream oldFile = new FileStream("1.txt", FileMode.Open);

StreamReader sr1 = new StreamReader(oldFile);

formerEdition = sr1.ReadLine();

此处读取.exe文件所在文件夹的1.txt文件,此处指读取一行,程序中用于读取本地版本号。

2.5 如何调用.exe文件

private void button1_Click(object sender, EventArgs e)

{

string exe_path = @"C:\Program Files\Tencent\QQ\";

System.Diagnostics.Process process = new System.Diagnostics.Process();

process.StartInfo.FileName = "qq.exe";

process.StartInfo.WorkingDirectory = exe_path;

process.StartInfo.CreateNoWindow =true ;

process.Start();

if (process.HasExited)

{

MessageBox.Show("complete");

}

}

此处用于在下载完更新文件后自动运行。可将此代码粘到下载代码后(用于Update程序)。

2.6 如何获取.exe文件所在地址

di = Path.GetDirectoryName(Application.ExecutablePath);

此前需要加入using System.IO;

 

另外,使用Environment.GetEnvironmentVariable("path")函数可以达到同样的效果

2.7 如何获取下载文件的大小

System.Net.HttpWebRequest Myrq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create("http://172.27.8.103/Update/%E7%81%AB%E5%BD%B1/火影.rar");

System.Net.HttpWebResponse myrp = (System.Net.HttpWebResponse)Myrq.GetResponse();

long totalBytes = myrp.ContentLength;

 

前两行用于与服务器建立连接,第三行用于获得下载文件的大小。

2.8 如何实现具有断点续传功能的文件下载

di = Path.GetDirectoryName(Application.ExecutablePath);

 

di += "\\abc.rar";

long lStartPos = 0; //用于记录断点位置

 

System.IO.FileStream fs;

 

if (System.IO.File.Exists(di))

{

 

fs = System.IO.File.OpenWrite(di);

 

lStartPos = fs.Length;

 

fs.Seek(lStartPos, System.IO.SeekOrigin.Current); //移动文件流中的当前指针

 

}

 

else

{

 

fs = new System.IO.FileStream(di, System.IO.FileMode.Create);//fiel stream***************************************

 

lStartPos = 0;

 

}

 

 

 

 

 

 

 

 

Myrq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create("http://172.27.8.103/Update/%E7%81%AB%E5%BD%B1/火影.rar");

//************

//***************************2007-9-4

if (lStartPos > 0)

 

Myrq.AddRange((int)lStartPos); //设置Range值

 

 

//**************************2007-9-4

//向服务器请求,获得服务器回应数据流

 

 

 

 

 

 

 

 

 

long totalDownloadedByte = lStartPos;

this.timer1.Enabled = true;

 

 

 

 

System.IO.Stream st = Myrq.GetResponse().GetResponseStream();

 

 

 

 

byte[] by = new byte[1024];

int osize = st.Read(by, 0, (int)by.Length);

 

int aaa = 0;

while (osize > 0)

{

totalDownloadedByte = osize + totalDownloadedByte;

Application.DoEvents();

fs.Write(by, 0, osize);

Prog.Value = (int)totalDownloadedByte;

osize = st.Read(by, 0, (int)by.Length);

label2.Text = Convert.ToString((long)totalDownloadedByte*100/totalBytes)+"%"; //显示下载的百分比

if ((aaa % 2000) == 0)

{

if (totalDownloadedByte / (1024 * totalseconds * 1024) <= 0)

this.label3.Text = "平均速度:" + (totalDownloadedByte / (1024 * totalseconds)) + "KB/s";

else

this.label3.Text = "平均速度:" + System.Math.Round(((float)totalDownloadedByte / (1024 * totalseconds * 1024)), 2) + "MB/s";

 

this.label6.Text = "剩余时间:" + ((totalBytes - totalDownloadedByte) / (totalDownloadedByte / totalseconds)) + "s";

if (totalDownloadedByte / (1024 * 1024) <= 0)

this.label7.Text = "已下载:" + System.Math.Round(((float)totalDownloadedByte / 1024), 2) + "KB" + "/" + Convert.ToString(System.Math.Round(((float)((double)(totalBytes) / 1024) / 1024), 2)) + "MB";

else

this.label7.Text = "已下载:" + System.Math.Round(((float)totalDownloadedByte / (1024 * 1024)), 2) + "MB" + "/" + Convert.ToString(System.Math.Round(((float)((double)(totalBytes) / 1024) / 1024), 2)) + "MB";

this.label8.Text = "已用时间" + Convert.ToString(totalseconds) + "s";

if (stop)

{

st.Close();

fs.Close();

return;

}

}

aaa++;

if (stop)

{

st.Close();

fs.Close();

return;

}

 

}

 

 

this.timer1.Enabled = false;

if (totalDownloadedByte / (1024 * 1024) <= 0)

this.label7.Text = "已下载:" + System.Math.Round(((float)totalDownloadedByte / 1024), 2) + "KB"+ "/" + Convert.ToString(System.Math.Round(((float)((double)(totalBytes) / 1024) / 1024), 2)) + "MB";

else

this.label7.Text = "已下载:" + System.Math.Round(((float)totalDownloadedByte / (1024 * 1024)), 2) + "MB"+ "/" + Convert.ToString(System.Math.Round(((float)((double)(totalBytes) / 1024) / 1024), 2)) + "MB";

this.label8.Text ="已用时间" + Convert.ToString(totalseconds) + "s";

此段程序的执行过程是,首先在.exe文件所在的文件加中寻找是否存在abc.exe文件,如果已存在(上一次的下载并未完成),获取abc.exe文件的大小,并设置文件流中的指针,以使其指向文件的末尾,同时为设置与服务器连接时的Range值做准备。如果不存在abc.exe文件,则创建。之后建立与服务器的连接,并相应的设置其Range值,之后进行下载。下载同时,加入了下载速率,剩余时间,已用时间等的计算,并相应的设置ProgressBar.Value的值。由于下载速率等刷新速度过快,加入while循环语句,使其刷新速率落后于ProgressBar的刷新速率2000倍(经过测试比较合适)。为使最后的下载值与最后的文件大小相适,下载完再刷新一次。

2.9 ProgressBar的使用

使用时先要设置ProgressBar.Maximun的值,在刷新设置ProgressBar.Value的值时,其值不得大于ProgressBar.Maximun的值。可将ProgressBar.Value值的设置放到下载循环中,以用于刷新。

2.10 在Xml文件中修改节点

XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点
   foreach(XmlNode xn in nodeList)//遍历所有子节点
   {
    XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
    if(xe.GetAttribute("genre")=="李赞红")//如果genre属性值为"李赞红"
    {
     xe.SetAttribute("genre","update李赞红");//则修改该属性为"update李赞红"
 
     XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
     foreach(XmlNode xn1 in nls)//遍历
     {
      XmlElement xe2=(XmlElement)xn1;//转换类型
      if(xe2.Name=="author")//如果找到
      {
       xe2.InnerText="亚胜";//则修改
       break;//找到退出来就可以了
      }
     }
     break;
    }
   }
 
   xmlDoc.Save("bookstore.xml");//保存。

 

相应被修改的Xml文件如下:

 

<?xml version="1.0" encoding="gb2312"?>
<bookstore>
  <book genre="fantasy" ISBN="2-3631-4">
    <title>Oberon's Legacy</title>
    <author>Corets, Eva</author>
    <price>5.95</price>
  </book>
  <book genre="李赞红" ISBN="2-3631-4">
    <title>CS从入门到精通</title>
    <author>候捷</author>
    <price>58.3</price>
  </book>
</bookstore>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305456.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

thinkpadt450s换键盘视频_ikbc c87 入门级有线机械键盘测评

大家好&#xff0c;我是胖虎。今天&#xff0c;写一写我当初买的第一把机械键盘「ikbc c87 茶轴」&#xff0c;非常好的入门级樱桃轴键盘&#xff0c;手感和键帽都很不错。ikbc c87 茶轴机械键盘小白&#xff0c;第一款入门级机械键盘买什么&#xff1f;这款ikbc c87和高斯 87C…

如何在 ASP.Net Core 中使用 条件中间件

ASP.Net Core 是微软开源的跨平台、可扩展、轻量级的模块化框架&#xff0c;可用于构建高性能的web应用程序。中间件组件可以注入到 ASP.Net Core 请求管道中实现对 Request 和 Response 的定制和修改。ASP.Net Core 中间件可以用于检查、路由或者修改流转于Pipeline的Request和…

solidity payable_以太坊区块链搭建与使用(五)-智能合约Solidity

一、智能合约Solidity开发工具1、remix-ide http://remix.ethereum.org/ 在线版本&#xff0c;也可以去github下载安装到本地。开发、编译、发布、执行、测试2、remix-ide-cn http://remix.hubwiz.com/ 在线中文版本&#xff0c;也可以去github下载安装到本地。支持开发、编译、…

Disable anchor tag的javascript代码(兼容IE和Firefox)

对于anchor tags(<a></a>)&#xff0c;IE支持一个非标准的"disabled"属性&#xff0c;但支持也不完善&#xff0c;比如&#xff0c;如果这个anchor tage没有 "href" 值&#xff0c;IE会把这个anchor设置为灰色&#xff0c;当然不能点击&#x…

大气校正后的ndvi_大气校正常见错误处理方法及校正后检查

本文汇总了ENVI FLAASH大气校正模块中常见的错误&#xff0c;并给出解决方法&#xff0c;分为两部分&#xff1a;运行错误和结果错误。前面是错误提示及说明&#xff0c;后面是错误解释及解决方法。FLAASH对输入数据类型有以下几个要求&#xff1a;1、波段范围&#xff1a;卫星…

dotnet cli 5.0 新特性——dotnet tool search

dotnet cli 5.0 新特性——dotnet tool searchIntro.NET 5.0 SDK 的发布&#xff0c;给 dotnet cli 引入了一个新的特性&#xff0c;dotnet tool search&#xff0c;主要用于搜索 Nuget 上的 dotnet tool&#xff0c;这个命令会搜索 tool 的名称以及一些元数据&#xff0c; tit…

localhost 已拒绝连接_MySQL连接错误:Access denied for #x27;root#x27;@#x27;localhost#x27;

问题描述&#xff1a;笔者在Mac安装MySQL&#xff0c;但是当我连接到localhost本地服务器却被拒绝mysql -u root -p(1045, "Access denied for user rootlocalhost (using password: YES)")根据MySQL的反馈&#xff0c;可以得知&#xff0c;我输入的root密码应该不对…

汇率升值与通货膨胀

[注]:本文首发于我的个人博客——FantasySoft&#xff08;个人博客所在的服务器IP被封&#xff0c;郁闷中&#xff09; 花了一个下午时间&#xff0c;总算搬过来了&#xff0c;欢迎各位光临&#xff01; 12月5日&#xff0c;为期三天的中央经济工作会议在北京闭幕。接着&#x…

ncl 添加点shp文件_气象编程 | NCL高效快速精准提取不规则区域内的格点数据

添加新云天气象主编微信或QQ&#xff1a;130188121&#xff0c;及时获取或发布气象升学、就业、会议、征稿及学术动态等信息&#xff01;通常情况下&#xff0c;要获取某个区域内的格点数据&#xff0c;如果要求不是很高&#xff0c;直接采取矩形框挑选方法——即锁定所需范围内…

2021技术领域趋势报告:Rust继续增长、低代码是重要趋势

喜欢就关注我们吧&#xff01;OReilly 发布了一份《2021 年编程、运维、AI 和云计算的发展方向》报告&#xff0c;该报告基于 OReilly 在线学习平台产生的数据&#xff0c;就技术行业的趋势进行了一番分析。编程语言方面&#xff0c;报告从使用情况、使用量的同比增长以及搜索查…

面试:一分钟自我介绍

一段短短的自我介绍&#xff0c;其实是为了揭开更深入的面谈而设的。一分钟的自我介绍&#xff0c;犹如商品广告&#xff0c;在短短六十秒内&#xff0c;针对“客户”的需要&#xff0c;将自己最美好的一面&#xff0c;毫无保留地表现出来&#xff0c;不但要令对方留下深刻的印…

python中list的意思_list在python中是什么意思

序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置&#xff0c;或索引&#xff0c;第一个索引是0&#xff0c;第二个索引是1&#xff0c;依此类推。 Python有6个序列的内置类型&#xff0c;但最常见的是列表和元组。 序列都可以进行的操作包括索引&a…

cad必练10张图_CAD比例问题大详解!赶紧收藏!

下面我们来按照从小白的起点学习比例问题&#xff1a;对于比例问题&#xff0c;最关键的一点&#xff0c;就是要弄明白「现实世界」「CAD 的虚拟模型空间」「打印出来的图纸」这三个世界之间的关系。弄明白了这个&#xff0c;一切就迎刃而解了。「现实世界」和「打印出来的纸质…

腾讯招.NET5,居然要求精通MySQL,而不是SQLServer!

春节将至&#xff0c;短暂的2020年正式要宣告结束&#xff0c;展望2021&#xff0c;可谓风起云涌&#xff0c;可以预见.NET5和云原生将是大热话题&#xff0c;NET开发者该如何把握机遇&#xff1f;逛逛招聘网站&#xff0c;看看大厂招聘&#xff0c;这是市场风向标。该学习的东…

32位mysql安装包_MySQL安装指南(CPT103)

随着CPT课程逐步开课&#xff0c;小猿发现了Online 大概等于 Self Learning 的状况&#xff0c;IT相关课程的学生们只能野蛮生长了(悲)。MySql作为一款应用级的软件&#xff0c;在Windows系统上安装过程比较繁琐&#xff0c;写篇文章帮大家避些小猿踩过的坑。MySQL收费&#xf…

Apache ECharts顺利毕业,成为ASF顶级项目

喜欢就关注我们吧&#xff01;1 月 26 日晚&#xff0c;Apache 基金会官方宣布 ECharts 项目正式毕业&#xff0c;成为 Apache 顶级项目。ECharts 是一款基于 JavaScript 的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的…

契税申报期限_税局正式公告!财产和行为税合并纳税申报!附税种申报要点

税局正式公告&#xff01;财产和行为税合并纳税申报&#xff01;安徽省、重庆市等地&#xff0c;11月23日都发布了《关于实行财产和行为税合并纳税申报的公告》一、申报方式&#xff1a;财产和行为税合并申报 二、申报税种&#xff1a;申报缴纳城镇土地使用税、房产税、车船税、…

【转】我们到底为了什么钻研技术?

我们到底为了什么钻研技术?在努力工作、学习了5年之后&#xff0c;1-2-3最近突然感觉有些迷茫&#xff1a;我们钻研技术到底是为了什么&#xff1f;作技术能走多远&#xff1f;1-2-3写下了自己的一些感想&#xff0c;也期待着你的精彩留言.... 程序员真是一个特殊的群体。白天…

c++ 多重背包状态转移方程_【考前再叮嘱】陌生方程式书写

点击上方蓝字 关注“爱学化学”今日分享陌生方程式书写作者|何佳欢 它来了&#xff0c;它真的来了&#xff0c;万众瞩目的期中考试正在缓缓向我们走来&#xff0c;纵观往年试题&#xff0c;陌生方程式书写绝对是众多考点中的C位&#xff0c;尤其是陌生的氧化还原反应方程式书…

网络被屏蔽了怎么办_预埋的网线不够长,怎么办?

前几天直播的时候&#xff0c;有很多朋友发弹幕问小泽&#xff0c;家里预埋的网线发现不够长怎么办&#xff1f;还有些朋友问家里的线不小心被弄断了怎么办&#xff1f;对于这些网线不够长或者网线断了的问题&#xff0c;其实很简单&#xff0c;小泽总结出三种简单的方法。不同…