公共字符串的值始终为空

Posted

技术标签:

【中文标题】公共字符串的值始终为空【英文标题】:public string's value is always null 【发布时间】:2014-08-18 13:34:13 【问题描述】:

几天前我开始学习 C#,但我遇到了公共字符串的问题,我目前正在尝试编写一个程序来复制和替换文件以进行练习,但无论如何我都遇到了公共字符串的问题我尝试了多少代码我无法弄清楚,所以我来这里寻求帮助

我做错了什么?

代码如下:

命名空间提取器

    公共部分类Form1:表格
    
        公共字符串
        
            得到;
            放;
        
        公共字符串 sSelectedPath
        
            得到;
            放;
        
        公共字符串备份
        
            得到;
            放;
        
        公共表格1()
        
            初始化组件();
        
        private void direc_Click(对象发送者,EventArgs e)
        
            FolderBrowserDialog fbd = new FolderBrowserDialog();
            fbd.Description = "选择一个文件夹";

        if (fbd.ShowDialog() == DialogResult.OK)
        
            string sSelectedPath = fbd.SelectedPath;
        

    

    private void choof_Click(object sender, EventArgs e)
    
        OpenFileDialog choofdlog = new OpenFileDialog();
        choofdlog.Filter = "All Files (*.*)|*.*";
        choofdlog.FilterIndex = 1;
        choofdlog.Multiselect = true;

        if (choofdlog.ShowDialog() == DialogResult.OK)
        
             string s = choofdlog.FileName;
        

    

    private void button3_Click(object sender, EventArgs e)
    
        ReplaceFile( s, sSelectedPath, beckup);
    

    public static void ReplaceFile(string FileToMoveAndDelete, string FileToReplace, string BackupOfFileToReplace)
    
        File.Replace(FileToMoveAndDelete, FileToReplace, BackupOfFileToReplace, false);

    

    private void button1_Click(object sender, EventArgs e)
    
        FolderBrowserDialog fbb = new FolderBrowserDialog();
        fbb.Description = "Select a folder";

        if (fbb.ShowDialog() == DialogResult.OK)
        
            string beckup = fbb.SelectedPath;
        
    

【问题讨论】:

根据指南 - 您应该在属性命名中使用 Pascal Case - msdn.microsoft.com/en-us/library/fzcth91k%28v=vs.71%29.aspx 【参考方案1】:
if (fbd.ShowDialog() == DialogResult.OK)

        string sSelectedPath = fbd.SelectedPath;

您在此处使用string 关键字声明了一个 变量。它不是设置属性。只需删除string。例如

if (fbd.ShowDialog() == DialogResult.OK)

        sSelectedPath = fbd.SelectedPath;

【讨论】:

【参考方案2】:

你的错误在这里:

if (choofdlog.ShowDialog() == DialogResult.OK)

    string sSelectedPath = choofdlog.FileName;

您使用的是局部变量,而不是成员变量。所以,写:

if (choofdlog.ShowDialog() == DialogResult.OK)

    sSelectedPath = choofdlog.FileName;

或者,如果您不想出错,最好在编写成员变量或方法时使用this.

if (choofdlog.ShowDialog() == DialogResult.OK)

    this.sSelectedPath  = choofdlog.FileName;

【讨论】:

【参考方案3】:

替换

 string s = choofdlog.FileName;

  s = choofdlog.FileName;

【讨论】:

以上是关于公共字符串的值始终为空的主要内容,如果未能解决你的问题,请参考以下文章

请帮忙///如何计算两个 字符串的最长公共子串

求两个输入的字符串的最长公共子串

hdu-1159 Common Subsequence

回文串(最长公共子序列)

两个字符串查找最大公共子串

KMP模板例题回文大师