c# - 构造函数不能调用自己c#

标签 c# .net silverlight constructor

构造函数“Delay.vkMessages.vkMessages(string, System.DateTime, string, bool, string)”无法调用自身。我有另一个类,这个类的副本,但它有效(我可以添加代码)。我如何可以解决这个错误吗?

   using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using ImageCacher;

    namespace Delay
    {
    public class vkMessages : INotifyPropertyChanged
    {
        public string Kto { get; private set; }
        public DateTime Date_Time { get; private set; }
        public string InOrOut { get; private set; }
        public string TexT { get; private set; }
        public bool Read_State { get; private set; }
        public IEnumerable<vkMessages> Messages
        {
            get
            {
                if (null == _vk_messages)
                {
                    _vk_messages = MessageService.GetMessages(InOrOut, () => MessagesLoaded = true);
                }
                return _vk_messages;
            }
        }
        private IEnumerable<vkMessages> _vk_messages;
        public bool MessagesLoaded
        {
            get { return _messagesLoaded; }
            set
            {
                _messagesLoaded = value;
                InvokePropertyChanged("MessagesLoaded");
            }
        }
        private bool _messagesLoaded;

        public vkMessages(string kto, DateTime date_time, string text, bool read_state)
        {
            Kto = kto;
            Date_Time = date_time;
            TexT = text;
            Read_State = read_state; 
        }
        public vkMessages(string kto, DateTime date_time,
            string text, bool read_state,string in_or_out)

            : this(kto,date_time,text,read_state,in_or_out)
        {
            InOrOut = in_or_out;

        }....

最佳答案

删除最后一个参数:

public vkMessages(string kto, DateTime date_time,
                  string text, bool read_state,string in_or_out)
    : this(kto, date_time, text, read_state)
{
    InOrOut = in_or_out;
}

也就是说,你的逻辑是有偏差的,应该反过来(即这个构造函数应该完成所有工作,另一个构造函数应该调用这个:

public vkMessages(string kto, DateTime date_time, string text, bool read_state)
    : this(kto, date_time, text, read_state, false) { }

public vkMessages(string kto, DateTime date_time,
                  string text, bool read_state,string in_or_out)
{
    InOrOut = in_or_out;
    Kto = kto;
    Date_Time = date_time;
    TexT = text;
    Read_State = read_state; 
}

最后,您应该修正您的标识符以符合 .NET 准则。特别是,类应遵循以大写字母开头的 PascalCase 约定。

关于c# - 构造函数不能调用自己c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6563798/

相关文章:

c# - 分析服务 C#

asp.net - Silverlight:品牌/设计和导航

c# - WCF中如何通过LINQ获取Json数据?

c# - 使用 C# 的 AWS Elasticache Redis

c# - .Net 应用程序范围的变量

.net - 无法静默安装 .msi 软件包

.net - 将代码保留在 View code 后面是不是很糟糕?

silverlight 绑定(bind)问题嵌套控件

Silverlight - 为什么要使用附加属性?

c# - 从数据表中删除行