草庐IT

C# 私有(private)、静态和只读

我在审查log4net的一些代码时遇到了这个问题。privatestaticreadonlyILoglogger=LogManager.GetLogger(typeof(AdminClient));我想知道为什么你需要有privatestaticreadonly。根据我的理解,private意味着除非有访问器方法或get属性,否则不能在类外使用该变量。static意味着该变量仅在该文件中起作用。readonly意味着您只能读取值而不能分配它。所以,我在想写这段代码的人。将其声明为私有(private)的,因为他们不希望它在类之外使用,而声明为静态的,因此不希望它在文件之外使用。但是,如

C# 私有(private)、静态和只读

我在审查log4net的一些代码时遇到了这个问题。privatestaticreadonlyILoglogger=LogManager.GetLogger(typeof(AdminClient));我想知道为什么你需要有privatestaticreadonly。根据我的理解,private意味着除非有访问器方法或get属性,否则不能在类外使用该变量。static意味着该变量仅在该文件中起作用。readonly意味着您只能读取值而不能分配它。所以,我在想写这段代码的人。将其声明为私有(private)的,因为他们不希望它在类之外使用,而声明为静态的,因此不希望它在文件之外使用。但是,如

c# - 为什么锁对象必须是只读的?

在实现锁时,我曾经在我的类中创建一个私有(private)对象:如果我想确定它被锁定在创建我的类的线程中:privateobjectLocker=newobject();如果我想确保它会为我的应用程序中的所有线程锁定:privatestaticobjectLocker=newobject();但是在这里:Whydoesthelockobjecthavetobestatic?在许多其他问题中,每个人都说对象必须是readonly。我还没有找到原因-甚至在MSDN或JavaDoc中也没有。因为我经常使用这种结构,有人可以向我解释为什么我应该使用readonly吗?谢谢!

c# - 为什么锁对象必须是只读的?

在实现锁时,我曾经在我的类中创建一个私有(private)对象:如果我想确定它被锁定在创建我的类的线程中:privateobjectLocker=newobject();如果我想确保它会为我的应用程序中的所有线程锁定:privatestaticobjectLocker=newobject();但是在这里:Whydoesthelockobjecthavetobestatic?在许多其他问题中,每个人都说对象必须是readonly。我还没有找到原因-甚至在MSDN或JavaDoc中也没有。因为我经常使用这种结构,有人可以向我解释为什么我应该使用readonly吗?谢谢!

c# - 为什么这个字段被声明为私有(private)的并且也是只读的?

在下面的代码中:publicclassMovieRepository:IMovieRepository{privatereadonlyIHtmlDownloader_downloader;publicMovieRepository(IHtmlDownloaderdownloader){_downloader=downloader;}publicMovieFindMovieById(stringid){varidUri=...buildURI...;varhtml=_downloader.DownloadHtml(idUri);return...parseIDHTML...;}publi

c# - 为什么这个字段被声明为私有(private)的并且也是只读的?

在下面的代码中:publicclassMovieRepository:IMovieRepository{privatereadonlyIHtmlDownloader_downloader;publicMovieRepository(IHtmlDownloaderdownloader){_downloader=downloader;}publicMovieFindMovieById(stringid){varidUri=...buildURI...;varhtml=_downloader.DownloadHtml(idUri);return...parseIDHTML...;}publi

c# - 只读静态字段如何为空?

下面是我的一节课的摘录:[ThreadStatic]readonlystaticprivateAccountManager_instance=newAccountManager();privateAccountManager(){}staticpublicAccountManagerInstance{get{return_instance;}}如您所见,它是一个单例线程-即该实例标有ThreadStatic属性。该实例也被实例化为静态构造的一部分。既然如此,当我尝试使用Instance属性时,怎么可能在我的ASP.NETMVC应用程序中收到NullReferenceException?

c# - 只读静态字段如何为空?

下面是我的一节课的摘录:[ThreadStatic]readonlystaticprivateAccountManager_instance=newAccountManager();privateAccountManager(){}staticpublicAccountManagerInstance{get{return_instance;}}如您所见,它是一个单例线程-即该实例标有ThreadStatic属性。该实例也被实例化为静态构造的一部分。既然如此,当我尝试使用Instance属性时,怎么可能在我的ASP.NETMVC应用程序中收到NullReferenceException?

c# - 匿名类型的非只读替代

在C#中,匿名类型可以是这样的:methoddoStuff(){varmyVar=new{a=false,b=true}if(myVar.a){//Dostuff}}但是,以下不会编译:methoddoStuff(){varmyVar=new{a=false,b=true}if(myVar.a){myVar.b=true;}}这是因为myVar的字段是只读的,不能赋值。似乎想做像后者这样的事情是相当普遍的;也许我见过的最好的解决方案是在方法之外定义一个结构。但是,真的没有其他方法可以使上述block起作用吗?困扰我的原因是,myVar是这个字段的局部变量,所以它似乎只应该在使用它的方法

c# - 匿名类型的非只读替代

在C#中,匿名类型可以是这样的:methoddoStuff(){varmyVar=new{a=false,b=true}if(myVar.a){//Dostuff}}但是,以下不会编译:methoddoStuff(){varmyVar=new{a=false,b=true}if(myVar.a){myVar.b=true;}}这是因为myVar的字段是只读的,不能赋值。似乎想做像后者这样的事情是相当普遍的;也许我见过的最好的解决方案是在方法之外定义一个结构。但是,真的没有其他方法可以使上述block起作用吗?困扰我的原因是,myVar是这个字段的局部变量,所以它似乎只应该在使用它的方法