相关疑难解决方法(0)

主构造函数不再在VS2015中编译

直到今天,我可以使用主要构造函数,例如:

public class Test(string text)
{
    private string mText = text;
}
Run Code Online (Sandbox Code Playgroud)

为了能够做到这一点,在以前的Visual Studio CTP中,我不得不将其添加到csproj文件中:

<LangVersion>Experimental</LangVersion>
Run Code Online (Sandbox Code Playgroud)

无论如何,这不再适用于Visual Studio 2015预览版(有或没有LangVersion).有没有人对可能发生的事情有任何想法?

c# c#-6.0 visual-studio-2015

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

最佳实践:在类定义中对public/protected/private进行排序?

我从头开始一个新项目,希望它干净/具有良好的编码标准.经验丰富的开发人员会以什么样的顺序在课堂上做出贡献?

答:1)公共方法2)私人方法3)公共变量4)私有变量

B:1)公共变量2)私有变量3)公共方法4)私有方法

C:1)公共变量2)公共方法3)私有方法4)私有变量

我通常喜欢将公共静态变量放在顶部,但是然后会在构造函数之前列出公共静态方法,还是应该首先列出构造函数?诸如此类的事情...

我知道这很有点但我只是想知道:这是什么最好的做法?

PS:不,我不使用Cc#.我知道.我是个luddite.

oop coding-style class-design

78
推荐指数
5
解决办法
4万
查看次数

布局C#类的最佳方法是什么?

是否有一种标准的方式来布置C#文件?如在,Fields,然后是Properties,然后是Constructors等?

这是我通常做的,但我想知道是否有标准方式?

  1. 嵌套类或枚举
  2. 字段
  3. 属性
  4. 活动
  5. 构造函数
  6. 公共方法
  7. 私人方法

人们将他们的领域组合在一起,还是将他们放在属性中?或者人们不担心订单?Visual Studio似乎让它变得如此困难.

编辑:在此处移动有关ReSharper的其他部分:使Resharper尊重您对代码顺序的偏好.

c# coding-style

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

是否有一种标准方法来组织类中的方法?

在类中组织方法似乎有许多不同的方法.我可以通过访问对方法进行分组,并按字母顺序排序.我可以将相关方法组合在一起.我可以使用两者的混合,或完全不同的东西.有没有一种标准的方法来解决这个问题?如果没有,你怎么接近它?

c# coding-style

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

您是将私人领域分组还是将其与其财产分开?

我已经在各种项目中看到(并使用过)这种布局,其中一组字段后跟一组属性:

private int MyIntField;
private string MyStringField;

public int MyInt { 
    get { return MyIntField; }
    set { MyIntField = value; }
}    
public string MyString { 
    get { return MyStringField; }
    set { MyStringField = value; }
}
Run Code Online (Sandbox Code Playgroud)

而且我也遇到了这个布局,其中包含了属性旁边的字段:

private int MyIntField;
public int MyInt { 
    get { return MyIntField; }
    set { MyIntField = value; }
}    

private string MyStringField;
public string MyString { 
    get { return MyStringField; }
    set { MyStringField = value; }
}
Run Code Online (Sandbox Code Playgroud)

有理由考虑一个比另一个好吗?我认为大多数编码标准都会推荐选项#1,但有时它可以方便地使用在其上运行的属性旁边的字段.

注意:我假设不能使用自动实现的属性的非平凡属性.

c# layout coding-style

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

我应该以什么顺序在C#类中放置属性,事件,函数,函数覆盖等?

在创建新的C#类时,我不确定用于声明属性,事件委托,函数,函数覆盖等的最佳逻辑顺序是什么,以及在决定该顺序时应该考虑哪些因素.

通常在创建WebUserControl类后面的代码时,我最终会按以下顺序放置内容:

  1. 活动
  2. 属性
  3. 生命周期事件覆盖功能
  4. 其他功能

有没有更合理的方法来做到这一点,在决定如何在类文件中订购类的这些元素时,我应该考虑哪些因素?

c# readability

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

在课堂上正确组织公共/受保护/私人功能

Resharper(与StyleCop配对)在遵守大部分规则方面让我有点整洁.其中一个规则集(我相信来自StyleCop)强制首先放置公共函数,然后保护静态,然后保护,然后是私有静态,最后是私有.

私有函数通常是将公共函数的功能备份为帮助程序的函数.假设我有以下函数的StyleCop强制执行:

public FunctionA
public FunctionB

private FunctionAHelper1
private FunctionAHelper2
private FunctionBHelper1
private FunctionBHelper2
Run Code Online (Sandbox Code Playgroud)

...虽然这并不是那么糟糕,我发现自己希望保持支持私有方法接近调用它们的函数,所以看起来更像是这样:

public FunctionA
private FunctionAHelper1
private FunctionAHelper2

public FunctionB
private FunctionBHelper1
private FunctionBHelper2
Run Code Online (Sandbox Code Playgroud)

您学到了什么能够指导课堂中方法的组织?什么是StyleCop想要公共/受保护/私人订购的理由?它真的归结为偏好问题,还是我没有看到的好处?

oop

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

StyleCop冲突规则:SA2104和SA1202

以下两个StyleCop规则发生碰撞!

SA1202:所有私有方法必须放在所有公共方法之后.

SA1204:所有静态私有方法必须放在所有非静态私有方法之前.

class Foo
{
    public static void Bar() { ... }
    private static void Grep() { ... }
    public void Meep() { ... }
    private void Moop() { ... }
}
Run Code Online (Sandbox Code Playgroud)

鉴于上面的类,StyleCop会抱怨已经在public方法上声明了一个私有方法

class Foo
{
    public static void Bar() { ... }
    public void Meep() { ... }
    private static void Grep() { ... }
    private void Moop() { ... }
}
Run Code Online (Sandbox Code Playgroud)

鉴于上面的类,StyleCop会抱怨静态方法已被声明为实例方法.

如果我希望对我的代码完全肛门并确保StyleCop总是通过验证,我该怎么做,或者只是(上帝禁止)关闭其中一条规则的唯一选择?

.net c# stylecop code-organization

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