C# 无法解析符号

标签 c# .net singleton symbols resolve

我不知道为什么会出现此错误。看起来很初级。无论如何,我有一个名为 EmailSender 的单例类。下面的代码很简短。问题是我不能在 MainWindow 类中使用 sender。我尝试的任何事情,例如 sender.Send() 都被视为我已经完成了 asdafsafas.Send()。它被视为随机字符串。不知道为什么会这样。

using System;
using System.Net.Mail;
using System.Windows.Forms;

namespace SendMail
{
    public partial class MainWindow : Form
    {
        #region Private variables
        private MailMessage msg = new MailMessage();
        private EmailSender sender = EmailSender.GetInstance();
        #endregion

        public MainWindow()
        {
            InitializeComponent();

        }

        private MailMessage PrepareMailMessage()
        {

            return msg;
        }

        private void btnSend_Click(object sender, EventArgs e)
        {

        }
    }
}

这是 GetInstance 方法:

public static EmailSender GetInstance()
{
    return _instance ?? (_instance = new EmailSender());
}

最佳答案

这是因为您定义此方法的方式(sender 是一个参数)。它首先 找到方法参数,而不是您的类级变量。你可以限定这个:

private void btnSend_Click(object sender, EventArgs e)
{
    // sender here is the "(object sender, " paramater, so it's defined
    // as system object.

    // use this instead:
    this.sender.Send(); // The "this" will make the class find the instance level variable instead of using the "object sender" argument
}

关于C# 无法解析符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8014579/

相关文章:

java - 什么时候单例类比只有静态方法的类更受欢迎?

c# - 如何使用 C#/LINQ 将 XML 转换为 JSON?

c# - 从十进制数中删除小数点

c# - 仅针对发布版本从项目文件中删除注释

c# - Performance Monitor .NET CLR Networking 4.0.0.0 实例命名

java - Spring注入(inject)静态(全局)单例

c# - 如何从文件读取/写入 C# BigIntegers?

c# - ORA-01453 : SET TRANSACTION must be first statement of transaction with LLBLGENPRO

c# - 如何防止 'System.FormatException' 出现在带有空文本框的 mscorlib.dll 中?

java - 使用枚举的线程安全单例