相关疑难解决方法(0)

在Java中适用时使用"final"修饰符

在Java中,有一种做法是声明每个变量(本地或类),如果确实是参数final.

虽然这使得代码更加冗长,但这有助于轻松阅读/掌握代码,并且还可以防止错误,因为意图已明确标记.

您对此有何看法,您对此有何看法?

java oop

189
推荐指数
11
解决办法
6万
查看次数

如果适当的话,将C#字段设为只读是否有任何好处?

我正在使用ReSharper开发一个项目.有时它会提示我可以只读取一个字段.这有什么表现或其他好处吗?我认为它的好处是相当低级的,或者任何好处都是纯粹的语义?

谢谢

在下面的示例中,该字段最初只是私有,但resharper提示将其设置为只读.我理解为什么它可以设置为只读,即.它是在构造函数中设置而不是再次更改,但只是想知道这是否有任何好处......

public class MarketsController : Controller
{
    private readonly IMarketsRepository marketsRepository;

    public AnalysisController(IMarketsRepository marketsRepository)
    {                
        this.marketsRepository = marketsRepository;
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑 查看MSIL的最简单方法是什么?

c# resharper cil readonly

23
推荐指数
2
解决办法
3127
查看次数

是否可以强制自动属性使用只读后备字段?

我的项目包含大量具有属性的类,其后备字段标记为只读,因为它们仅在构造时设置.作为一种风格问题,我喜欢使用自动属性,因为它消除了大量的样板代码,并鼓励使用属性成员而不是支持字段.但是,当使用自动属性时,我失去了我的支持字段的"readonly-ness".我知道当字段以这种方式标记时,编译器/运行时能够利用一些性能增强,所以我希望能够将我的auto-property标记为readonly,如下所示:

[ReadOnly]
public string LastName { get; }
Run Code Online (Sandbox Code Playgroud)

而不是

private readonly string _LastName;
public string LastName 
{ 
    get
    { 
        return _LastName;
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有一些机制可以做到这一点?如果没有,自定义支持字段的性能增益是否真的值得?

我认为,将该字段公开为公共是另一种选择,以这种方式公开字段似乎是错误的.即

public readonly string LastName;
Run Code Online (Sandbox Code Playgroud)

.net c#

12
推荐指数
2
解决办法
2351
查看次数

防止更改String.Empty的值

部分来自好奇的破坏事物的观点,部分来自对潜在问题的保护.想象一下,通过调用以下内容可以发生的最坏情况(或者类似的东西,但这string.Empty是一个很好的例子):

typeof(String).GetField("Empty", 
    BindingFlags.Public | 
    BindingFlags.NonPublic | 
    BindingFlags.Static | 
    BindingFlags.GetField
).SetValue(null, "foo" );
Run Code Online (Sandbox Code Playgroud)

当某些代码存在时,这会导致问题x = myClass.bar ?? string.Empty.

是否有任何方法(类似于不同的应用程序域或类似)来防止(或检测)某些人更改String.Empty或者可能是SqlDateTime.MinValue(或.NET中的其他类似只读字段)的值?

.net c# reflection

9
推荐指数
1
解决办法
2101
查看次数

.Net - 避免魔术弦的策略

在工作代码中,我们有许多魔术字符串的使用,如下面的代码片段:

if (user.HasRight("Profile.View")) {...}
Run Code Online (Sandbox Code Playgroud)

因此,有很多地方我们将字符串作为参数传递,以查看用户是否具有特定权限.我不喜欢这样,因为它产生了很多神奇的字符串.

做一个更好的方法是什么?

Enum,Constant,class?

.net magic-string

8
推荐指数
2
解决办法
6336
查看次数

PHP 8.1 中 readonly 有什么好处?

在 PHP 8.1 中,readonly 关键字现已可用。我很好奇它的目的。它是为了帮助编辑者认识到某个属性是只读的,还是为了帮助客户理解这个特性,还是有其他目的?

php oop immutability php-8.1

6
推荐指数
1
解决办法
2541
查看次数

Resharper将字段更改为只读

我正在尝试Resharper,我注意到它建议将实例级别字段设置为只读.例如:

private readonly IConnection _connection;

public RetrieveCommand(IConnection connection) {
    _connection = connection;
}
Run Code Online (Sandbox Code Playgroud)

标记这样的字段有什么好处?

c# resharper readonly

5
推荐指数
2
解决办法
403
查看次数

如何在C#中限制对其容器的嵌套类的访问?

我有一个配置类商店应用程序配置.目前我正在使用静态类.一些配置与一个主题相关,所以我想将它们组织成一个嵌套类,所以我可以引用这样的配置:

AppConfig.Url
AppConfig.LogSettings.FileSize
Run Code Online (Sandbox Code Playgroud)

我有两个选项,要么使用静态嵌套类,

public static class AppConfig
{
    public static class LogSettings
    {
        public static int FileSize {get; set;}
    }
}
Run Code Online (Sandbox Code Playgroud)

或声明一个类但添加一个静态属性:

public static class AppConfig
{
    public class LogSettings
    {
        public int FileSize {get; set;}
    }

    public static LogSettings logSettings { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

但是,它们都不能保护被其他类修改的嵌套类成员FileSize,即使我private set用来保护公共静态属性.也许我不应该使用嵌套类来实现它?有什么建议?

c# inner-classes access-levels

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