【发布时间】:2019-10-23 06:41:11
【问题描述】:
我正在使用 get set 方法循环另一个方法。如下图,我尝试增加ValuesForTableLooping类中Table10_3的值。在 Main 方法中,我调用了 get set 属性将值加一。
我手头有 2 个问题,
- 有没有办法调用get set方法而不把它写成
Inc.Val = 0;? - 为什么更改
Inc.Val = 0;中的任何值都不会影响结果?
class Class2
{
public class ValuesForTableLooping
{
public static int Table10_3 = 1;
}
public static void Main()
{
Console.WriteLine(ValuesForTableLooping.Table10_3);
Increase Inc = new Increase();
Inc.Val = 0;
Console.WriteLine(ValuesForTableLooping.Table10_3);
Inc.Val = 0;
Console.WriteLine(ValuesForTableLooping.Table10_3);
Inc.Val = 0;
Console.WriteLine(ValuesForTableLooping.Table10_3);
}
public class Increase
{
private int val;
public int Val
{
get { return val; }
set { val = ValuesForTableLooping.Table10_3++; }
}
}
}
再次感谢您!
【问题讨论】:
-
1:使用方法而不是属性。 2:将
ValuesForTableLooping类也设为静态 -
setter 通常允许从外部设置一个新值。增加 setter within 的值似乎很奇怪。也许您应该改用
IncreaseVal-方法。此外,一个类不应包含 verb,而通常是 noun。话虽如此,类是某种实体,而不是你可以对实体做的事情。 -
我认为这个问题可以通过对属性是什么以及如何使用它们的少量研究来解决。我认为这是一个好的开始docs.microsoft.com/en-us/dotnet/csharp/programming-guide/… 和这个docs.microsoft.com/en-us/dotnet/csharp/programming-guide/…
-
提示:
Inc.Val = 0;在进入set { }方法时,0 被放入一个名为value的“魔法”(嗯,它存在而不在您的代码中声明)变量中。跨度> -
谢谢大家,我已经使用了一种方法,但我想探索各种方法来实现我的目标。我现在看到 get 和 set 是不可靠的。关于命名,我很抱歉,因为这是一个测试脚本,我是为了测试一个概念。感谢您提醒我需要遵守命名约定。