所以我知道有很多关于getter和setter的问题,但我找不到与我的问题完全相同的东西.我想知道人们是否根据不同的语言改变了get/set的使用.我开始学习C++,并被教导使用getter和setter.这就是我的理解:
在C++(和Java?)中,变量可以是公共的也可以是私有的,但我们不能混合使用.例如,我不能拥有一个只能在类中更改的只读变量.它可以全部公开(可以读取和更改),也可以全部是私有的(无法读取,只能在课堂内更改).由于这个(以及可能的其他原因),我们使用getter和setter.
在MATLAB中,我可以控制变量的"setaccess"和"getaccess"属性,这样我就可以将事物设为只读(可以直接访问属性,但不能覆盖它).在这种情况下,我不觉得我需要一个getter因为我可以做class.property.
此外,在Python中,它被认为是"Pythonic",不使用getter/setter,只在需要时才将东西放入属性中.我真的不明白为什么在Python中使用所有公共变量都可以,因为这与我在使用C++时所学到的相反.
我只是好奇其他人的想法是什么.你会为所有语言使用getter和setter吗?您是否只将它用于C++/Java并在MATLAB和Python中直接访问(这是我目前正在做的)?第二种选择被认为是不好的吗?就我的目的而言,我只是指简单的getter和setter(只返回/设置值,不做任何其他事情).
谢谢!
我有两个异步方法,它们作为单独的线程/任务在窗体窗口的后台运行。这些是无限循环,仅在后台执行一些工作,然后使用分派器更新UI。见下文。
public async Task RunCameraThread(CancellationToken cancelToken)
{
while (true)
{
// If cancellation token is set, get out of the thread & throw a cancel exception
cancelToken.ThrowIfCancellationRequested();
// Get an image from the camera
CameraBitmap = Camera.CaptureImage(true);
// Update the UI (use lock to prevent simultaneous use of Dispatcher object in other thread)
lock (Dispatcher)
{
Dispatcher.Invoke(() => pictureBoxCamera.Image = tempBitmap);
Dispatcher.Invoke(() => pictureBoxCamera.Invalidate());
}
}
}
public async Task RunDistanceSensorThread(CancellationToken cancelToken)
{
while (true)
{
// If cancellation token …
Run Code Online (Sandbox Code Playgroud)