C# - 在声明中设置初始值的缺点

标签 c# .net oop instantiation

这样的类(class)有什么缺点吗:

class Example1
{
  protected string UserId = (string)Session["user"];
}
//versus

class Example2
{
  protected string UserId;
  public Example2()
  {
      UserId = (string)Session["user"];
  }
}

如果我一直想设置这个值,Example1 有什么缺点吗?

更新:
Session["user"] 在 Global.asax Session_Start 中设置。所以如果这失败了。无论如何都不应该起作用。

最佳答案

您最大的问题是如果此 protected string UserId = (string)Session["user"]; 失败。您无法优雅地降级。通过将它放在构造函数等中。您可以检查 Session 并决定要做什么。

作为一般规则,我只尝试放入我知道会成功的值,例如 UserId = -1; 等,然后在需要时在代码块中修改它们。您永远不知道什么时候会出错,而您需要从中恢复。

关于C# - 在声明中设置初始值的缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2998303/

相关文章:

c# - 派生类中属性变化的基类感知

c# - 限制 CosmosDB 查询的 1000 条记录

c# - BinarySearch 没有预期的结果

c# - 如何在 Entity Framework 4.3 中禁用模型兼容性检查?

.net - SignalR - connection.hubName 未定义

java - 为什么 BaseAdapter 的自定义子类只需要实现 Adapter 接口(interface)中的一些抽象方法?

c++ - 重载组合运算符(+ =,-=,* =和/=)。不计算应如何

c# - 下面的PUT方法代码中是否需要int id?

java - 将 Map 的 Map 更改为泛型类型

c# - 解决这个问题的最佳设计模式是什么?