相关疑难解决方法(0)

C#的隐藏功能?

在我从这个问题中学到以下内容后,我想到了这一点:

where T : struct
Run Code Online (Sandbox Code Playgroud)

我们C#开发人员都知道C#的基础知识.我的意思是声明,条件,循环,运算符等.

我们中的一些人甚至掌握了Generics,匿名类型,lambdas,LINQ等......

但是C#粉丝,瘾君子,专家几乎都不知道C#最隐藏的功能或技巧是什么?

以下是到目前为止显示的功能:


关键词

属性

c# hidden-features

1475
推荐指数
230
解决办法
68万
查看次数

访问修改后的封闭(2)

这是Access到Modified Closure的问题扩展.我只是想验证以下内容是否足够安全,适合生产使用.

List<string> lists = new List<string>();
//Code to retrieve lists from DB    
foreach (string list in lists)
{
    Button btn = new Button();
    btn.Click += new EventHandler(delegate { MessageBox.Show(list); });
}
Run Code Online (Sandbox Code Playgroud)

我每次启动时都只运行一次.现在似乎工作正常.正如Jon在某些情况下提到的反直觉结果一样.那么我需要注意什么呢?如果列表不止一次运行会没问题吗?

.net c# resharper closures

101
推荐指数
1
解决办法
1万
查看次数

使用Linq将单个值返回到SQL

我正在学习Linq to SQL,我很难理解它.我试图简单地在C#中使用Linq查询返回单个(布尔值)值.

我想看看故事的所有者是否希望在添加新评论时发送电子邮件通知.我想包含Linq to SQL的方法返回一个布尔值.

 public bool NotifyOnComment(string username){
        var notify = (from s in db.AccountSettings
                      where s.UserName == username
                      select s.NotifyOnComment).DefaultIfEmpty(false);

        // clueless
    }
Run Code Online (Sandbox Code Playgroud)

更新:

我现在正在做以下事情:

var notify = (from s in db.AccountSettings
                      where s.UserName == username
                      select s.NotifyOnComment).SingleOrDefault();

        return (bool)notify;
Run Code Online (Sandbox Code Playgroud)

linq asp.net asp.net-mvc linq-to-sql

14
推荐指数
2
解决办法
3万
查看次数

为什么不从DB读取C#属性getter?

这个问题的一些答案和评论:最简单的C#代码来调查一个属性?,暗示从属性的getter中的数据库中检索数据通常是一个坏主意.
为什么这么糟糕?

(如果您有自己的信息来源,请提及.)


我通常会在第一次"获取"之后将信息存储在变量中以供重用,如果这会影响您的答案.

c# properties

8
推荐指数
3
解决办法
3329
查看次数

设计应用程序类

除了使用单一责任原则之外,在为应用程序设计类时,人们正在编写,应该记住什么,以保持代码可维护,可重用并遵守OOP原则?

我发现很难设计我正在尝试编写的应用程序类,因为什么时候决定哪个(功能)在哪个类中进行,以及它是否应该真正在派生类中,或者应该有一个抽象类或这个类的接口?

我知道这可能是一个有许多答案的主题,但是有没有人有任何好的指导方针(最好是简单的)来设计易于维护的类和类层次结构,并且在创建大型应用程序时不会弄得一团糟?

编辑:

当有超过10个方法的类时,它们有一个抽象的基类和接口.还有3个在类中全局引用的Singleton类以及更多.听起来需要应用一些"重构"?

对不起,如果这是一个很长的例子,但你看到我面临的问题,我想要一些输入.请看一下设计,而不是技术问题.

我举个例子:

我创建了这个类:(前一阵子)

  class ExistingUserLogon : Logon, ILogonUser
    {
        #region Member Variables

        LogonEventArgs _logoneventargs;
        LogonData lgndata;
        Factory f = Factory.FactoryInstance;
        PasswordEncrypt.Collections.AppLoginDataCollection applogindatacollection;
        PasswordEncrypt.Collections.SQlLoginDataCollection sqllogindatacollection;
        bool? compare;
        static ExistingUserLogon existinguserlogon;
        PasswordEncrypt.SQLDatabase.DatabaseLogin dblogin;
        string databasename = string.Empty;

        #endregion

        #region Properties

        public static ExistingUserLogon ExistingUserLogonInstance
        {
            get
            {
                if (existinguserlogon == null)
                    existinguserlogon = new ExistingUserLogon();
                return existinguserlogon;
            }
        }
        public string loginname
        {
            get;
            set;
        }
        #endregion

        #region Contructors
        public ExistingUserLogon(bool? compare, LogonData logondata)
        {
            this.compare = …
Run Code Online (Sandbox Code Playgroud)

c# architecture design-patterns

2
推荐指数
1
解决办法
476
查看次数