相关疑难解决方法(0)

C#中的方法与属性 - 有什么区别

可能重复:
属性与方法

在方法中,您也可以在属性中键入一些代码.例如,我有一个属性名称.当类名更改时,我想从数据库中获取一些数据并更改对象的状态.我可以添加此代码来设置我的属性的一部分.其他解决方案是将set part更改为private并添加名为SetName的方法,并在此方法中添加我的代码.

那么区别是什么呢?什么时候把一些代码放到getter/setter并且何时创建自己的方法来改变我的属性和我的类的其他部分是不合适的?

c# oop methods properties class

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

如何在With ... End With中访问对象本身

一些代码来说明我的问题:

With Test.AnObject

    .Something = 1337
    .AnotherThing = "Hello"

    ''// why can't I do this to pass the object itself:
    Test2.Subroutine(.)
    ''// ... and is there an equivalent, other than repeating the object in With?

End With
Run Code Online (Sandbox Code Playgroud)

vb.net with-statement

15
推荐指数
3
解决办法
5121
查看次数

在.NET中公开成员对象作为属性或方法

在.NET中,如果一个类包含一个类对象的成员,那么该成员是应该作为属性公开还是使用方法公开?

.net methodology properties class

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

何时使用属性vs方法?

可能重复:
属性与方法

关于何时使用属性与方法相比,是否有任何规则或一般最佳实践?从技术上讲,任何无参数方法都可以在属性中进行,任何属性都可以作为方法,但有时何时决定何时使用其中一个可以模糊.

在决定两者之间时,我希望得到一些你们要记住的规则.

.net c# oop

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

属性和方法之间的界限应该在哪里?

可能重复:
属性与方法

在许多情况下,很明显某些东西应该是属性还是方法,但是有些东西可能被认为是含糊不清的.

明显属性:

  • "名称"
  • "长度"

明显的方法:

  • "发信息"
  • "打印"

暧昧:

  • "有效"/"IsValid"/"验证"
  • "InBounds"/"IsInBounds"/"CheckBounds"
  • "AverageChildValue"/"CalcAverageChildValue"
  • "ColorSaturation"/"SetColorSaturation"

我想我会倾向于模棱两可的方法,但有没有人知道有助于决定这一点的规则或惯例?例如,所有属性应该是O(1)?属性是否应该无法更改其他数据(ColorSaturation可能会更改R,G,B值)?如果有计算或汇总,它不应该是财产吗?

仅仅从学术的角度来看,(而不是因为我认为这是一个好主意)是否有理由不对属性发疯,只是在不参与争论的情况下制作所有类别的审讯,以及可以改变的一切具有单个参数且无法失败的类,属性?

c# methods properties conventions time-complexity

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

使用属性或方法在C#中公开业务规则?

我正在编写一个类来封装一些业务规则,每个规则都由一个布尔值表示.该类将用于处理InfoPath表单,因此规则通过使用XPath操作在全局XML数据结构中查找值来获取当前程序状态.将这些规则暴露给调用者 - 属性或公共方法的最佳(最惯用)方法是什么?

使用属性调用

Rules rules = new Rules();
if ( rules.ProjectRequiresApproval ) {
    // get approval
} else {
    // skip approval
}
Run Code Online (Sandbox Code Playgroud)

使用方法调用

Rules rules = new Rules();
if ( rules.ProjectRequiresApproval() ) {
    // get approval
} else {
    // skip approval
}
Run Code Online (Sandbox Code Playgroud)

规则类将规则公开为属性

public class Rules() {
    private int _amount;
    private int threshold = 100;

    public Rules()  {
        _amount = someExpensiveXpathOperation;
    }

    // rule property
    public bool ProjectRequiresApproval {
        get { return _amount > threshold }
    } …
Run Code Online (Sandbox Code Playgroud)

c# methods properties

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

{get; set;}和访问修饰符

我刚刚开始学习c#,而且我对getter和setter的简写有点挣扎.

据我了解,下面的两种方法是等效的.它是否正确?

//Method 1
public string name { get; set; }

//Method 2
private string name
public string getName() { return name;}
public string setName(string newName) { this.name = newName; }
Run Code Online (Sandbox Code Playgroud)

其次,如果我们想要在getter/setter和实例变量上使用不同的访问修饰符,这是如何工作的.以下代码错误,告诉我访问者必须比属性更具限制性,并且我无法为烦恼访问器指定修饰符.有人可以澄清一下吗?

private int maxTime { public get; public set; }
Run Code Online (Sandbox Code Playgroud)

编辑:澄清一下,我没有具体的目标,只有理解.我不明白这个简写符号是做什么的.在其他语言中,我有私有实例变量,并使用公共getter和setter来管理这些实例变量.如果我自己写出方法,它就允许这样做,但不能用这个简写符号.为什么是这样?

编辑2:检查我的理解的最后一个问题.下面的两个代码片段都使用属性来管理maxTime变量.两者之间的唯一区别是风格.它是否正确?

private int maxTime;
public int MaxTime{ get; set; }
Run Code Online (Sandbox Code Playgroud)

VS

private int maxTime;

public int MaxTime
{
    get { return maxTime; }
    set { maxTime= value; }
}
Run Code Online (Sandbox Code Playgroud)

c#

7
推荐指数
2
解决办法
5606
查看次数

我应该使用属性或方法计算值吗?

可能重复:
属性与方法

我有一些矢量几何类,并且有很多功能我不知道是否实现为(只读)属性或方法.例子包括:

Vector.Length                   or              Vector.Length()
Vector.Perpendicular            or              Vector.Perpendicular()
Matrix.Determinant              or              Matrix.Determinant()
Matrix.Inverse                  or              Matrix.Inverse()
Run Code Online (Sandbox Code Playgroud)

我应该将这些作为方法或属性实现吗?他们都没有改变他们适用的对象,所以在这方面,他们似乎适合作为属性.另一方面,它们涉及计算(虽然是小的 - 这是2D几何),这显然对属性不利.

在这种情况下,我应该使用哪些规则?

c# properties semantics

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

我应该在我的C#程序中使用属性还是应该使用get/set访问器?

当我遇到这个声明时,我正在阅读Rob Miles的一本名为C#Yellow Book的书:

程序员喜欢新的闪亮玩具.他们非常热衷于使用语言功能来炫耀.属性可能有点像这样.在考虑属性与get和set方法时,我更喜欢老式的get和set方法,因为你知道你在哪里使用它们.另一方面,如果以正确的方式使用,我可以看到属性可以使生活更轻松.

我不太确定他的意思是什么.你们有什么建议?MS建议什么?

c# coding-style properties

4
推荐指数
3
解决办法
896
查看次数

.NET - 我应该何时使用属性与变量+访问器函数?

有没有我应该在.NET中执行以下操作而不是使用具有读/写功能的属性的情况?

private S as string

public function GetS() as string
     return S
end function

public sub SetS(byval NewS as string)
    S = NewS
end function
Run Code Online (Sandbox Code Playgroud)

属性是否只是提供了一种更有效的方法来做同样的事情?

在高性能应用程序中,属性是否会比上述访问器功能慢?

.net vb.net properties

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