在.NET应用程序中何时应该使用"ReadOnly"属性,何时应该只使用"Get".这两者有什么区别.
private readonly double Fuel= 0;
public double FuelConsumption
{
get
{
return Fuel;
}
}
Run Code Online (Sandbox Code Playgroud)
要么
private double Fuel= 0;
public double FuelConsumption
{
get
{
return Fuel;
}
}
Run Code Online (Sandbox Code Playgroud) 我在Arduino平台上编码,我正在尝试编写一些能够在C中连接/追加字节数组的东西.
byte a[] = {a1, ..., an};
byte b[] = {b1, ..., bm};
byte c[] = a + b; // equivalent to {a1, ..., an, b1, ..., bm}
Run Code Online (Sandbox Code Playgroud)
获得上述结果的最佳方法是什么?
我尝试在网上搜索,但是我运气不好.我在SO上看到了另一个答案,强调了为了做到这一点所需要的步骤,但我无法遵循它们.他们还说有些图书馆可以处理这类事情,但是当我在Arduino时,我不确定这些是否完全可供我使用.
我知道需要进行某种记忆操作才能实现这一点,但是我对这些低级操作不熟悉,所以对我来说没有太多意义.我有更高级语言的经验(C#,Java和一些C++).
我还要补充一点:同样的技术可以用于:
byte a[] = {a1, ..., an};
byte b[] = {b1, ..., bm};
a = a + b
Run Code Online (Sandbox Code Playgroud) 说我有这个通用类:
abstract class Foo<T> where T : IBar
Run Code Online (Sandbox Code Playgroud)
这在这里很好,但我也希望能够通过double.现在我被告知这是一个坏主意,解决这个问题的唯一方法是编写一个处理双重案例的重复类.我也被告知,玩这种原始类型并不是一个好主意.
我想做的是包装double在一个实现的类中IBar.这将允许我使用包裹的双.我可以看到使用该类的一些问题,我再次被告知,为这些目的包装原始类型是一个坏主意.
catagorised的结构是double我们所知道的BigRational结构.这是两个System.Numerics.BigInteger成员之间的商的表示.算术是在这个结构上完全定义的Foo,T应该为double和定义做什么BigRational.
现在恰当的原因是这些是不相关的,因此创建一个界面来联合它们是不好的做法(更不用说首先包装原语).
我对IBar界面的想法是将算术作为一项要求.现在将来,如果我尝试使用Foo其他类/结构来实现IBar它应该没问题.但我也想double工作.所以现在我正在寻找的是一个很好的理由,甚至double首先包装,以及这将如何与良好的实践相吻合.
在Coq作为一名数学家,我本来期待的
Set -> Set : Set
Run Code Online (Sandbox Code Playgroud)
但我想这是因为我的数学家帽子已经开启了.我该怎么做才能让它发挥作用?
我是否应该考虑设置不同并使用不同类型的Set?