首页 > 解决方案 > 如何选择一个值来填充密封类中的两个值

问题描述

我有一个密封类,在这个密封类中我有一个“public int shoebox128bit { get; } = 256 / 8;” 在字节数组中输入。现在,我要做的是当用户选择“shoebox128bit”时。我还需要在另一个字节数组中输入不同的值。本质上,我需要将尺寸加倍。

RNGCryptoServiceProvider().GetBytes(shoebox = new byte[shoebox128bit]); // 32

byte[] shoeboxTools = new byte[shoebox128bitDoubled]; // 64

我知道这可能看起来有点令人困惑,但我要做的就是当您选择一个值时,它将该值放置在类中的指定位置。然后,将该值加倍并在同一类的另一个位置输入该加倍的值。

  1. 用户选择shoebox128bit。

在课堂的幕后,这个动作发生了:

"32" in the RNGCryptoServiceProvider
byte[] shoeboxTools = new byte[64];

有没有办法实现这个目标?

提前感谢您的帮助。

标签: c#

解决方案


那么,如果我理解正确,您的密封类基本上只是常量的集合?你的例子也是在密封类中,还是在其他地方?

我首先想到的是扩展属性以在调用 getter 时执行代码。像这样:

private int _shoebox128bit = 256/8;    
public int shoebox128bit 
{ 
   get
   {
      shoebox128bitDoubled = _shoebox128bit * 2;
      return _shoebox128bit; 
   } 
}

这样,每个属性都可以负责需要在相关属性上发生的操作。或者,您可以将 shoebox128bitDoubled 变成一种计算属性。

public int shoebox128bitDoubled => shoebox128bit * 2;

如果要获取的第二个属性始终是相同的,但根据选择具有不同的值,则使用选项 1 可能会更好。


推荐阅读