2

这是代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using System.Text.RegularExpressions;
using System.IO;
using unfreez_wrapper;
using Shell32;


namespace DownloadImages
{
    public partial class Form1 : Form
    {
        string rainMapToRead;
        string UrlsPath;
        int counter;
        UnFreezWrapper uf;
        string localFilename;
        string stringForSatelliteMapUrls;
        string satelliteMapToRead;
        List<string> StartTags;
        List<string> LastTags;
        List<string> Maps;

        ExtractImages ei;

        public Form1()
        {
            InitializeComponent();




                using (WebClient client = new WebClient())
                {
                    client.DownloadFile("http://www.sat24.com/foreloop.aspx?type=1&continent=europa#",localFilename + "rainMap.html");
                    client.DownloadFile("http://www.sat24.com/en/eu?ir=true", localFilename + "satelliteMap.html");
                }

                rainMapToRead = File.ReadAllText(localFilename + "rainMap.html");
                satelliteMapToRead = File.ReadAllText(localFilename + "satelliteMap.html");

localFileName 在目录路径之前。但现在我没有定义它,所以它是空的。但即使它为空,rainMapToRead 也不为空,并且能够找到并读取“rainMap.html”

我的意思是如果文件下载到的变量 localFilename 为空?C: ?D:?如果它为空,默认位置是什么?

4

4 回答 4

3

连接 null 有效,你不会得到任何异常。这就是正在发生的事情

null + "satelliteMap.html" = "satelliteMap.html"

如果这是一个相对位置,文件将存储在 exe 的物理位置。

来自MSDN

相比之下,空字符串不引用 System.String 对象的实例,任何对空字符串调用方法的尝试都会导致 NullReferenceException。但是,您可以在与其他字符串的连接和比较操作中使用空字符串。

于 2013-09-18T12:31:34.667 回答
3

因为这(null + " hello")是 . 中完全合法的表达C#

如果您查看How to: Concatenate Multiple Strings (C# Programming Guide),您可以找到以下语句:

在字符串连接操作中,C# 编译器将空字符串视为空字符串,但它不会转换原始空字符串的值。

于 2013-09-18T12:31:48.227 回答
0

concat ( +) 运算符仅将null其视为空字符串。

使用的路径是工作目录。

于 2013-09-18T12:31:38.340 回答
0

默认位置与可执行文件的位置相同。

因此,如果您的可执行文件在 .. 运行C:\MyProgram\WebClient则会将文件下载到C:\MyProgram\rainMap.html.. 并且您rainMapToRead将从C:\MyProgram\rainMap.html..

这是因为null + "String"=="String"

于 2013-09-18T12:32:12.803 回答