gpt4 book ai didi

c# - C# 是否与 C++11 中的 decltype 等效?

转载 作者:IT老高 更新时间:2023-10-28 22:21:50 27 4
gpt4 key购买 nike

我已经熟悉 C++,并且在尝试了 C++11 提供的一些新功能后,我决定更加熟悉 C#。

正如预期的那样,编程原理相似,但某些功能不同。差异和相似之处是我所关注的,因此我决定问一下 C# 是否与 C++11 中的 decltype 等效?

int x = 4;
decltype(x) y = 16;

在上面的示例中,'var' 可以正常工作,所以这里有一个示例说明何时需要 decltype。如果我只是有条件地调用一个函数,那么我需要声明将保存其结果而不使用'var'的变量,如下所示:

var pendingProcessData = trace.UseProcesses();
// Only request CPU scheduling data when it is actually needed, to avoid
// unecessary trace processing costs. Unfortunately this means that the
//
IPendingResult<ICpuSchedulingDataSource> pendingSchedulingData = null;
if (showCPUUsage)
pendingSchedulingData = trace.UseCpuSchedulingData();

trace.Process();

ICpuSchedulingDataSource schedulingData = null;
if (showCPUUsage)
schedulingData = pendingSchedulingData.Result;

使用 decltype 我可以这样说:

var pendingProcessData = trace.UseProcesses();
// Only request CPU scheduling data when it is actually needed, to avoid
// unecessary trace processing costs. Unfortunately this means that the
//
decltype(trace.UseCpuSchedulingData()) pendingSchedulingData = null;
if (showCPUUsage)
pendingSchedulingData = trace.UseCpuSchedulingData();

trace.Process();

decltype(pendingSchedulingData.Result) schedulingData = null;
if (showCPUUsage)
schedulingData = pendingSchedulingData.Result;

这扩展了 'var' 的魅力,并且可以让我免于追踪具体类型是什么。需要明确的是,我不在乎什么类型的 pendingSchedulingData 和 schedulingData 迫使我弄清楚并在代码中提及它具有实际成本但没有值(value)。

最佳答案

在 C# 中,没有与 decltype 等效的功能。

也许类型推断是最接近 decltype 的特征:

int x = 4;
var y = x + 1;

但是没有实际的语法特性允许使用从其他给定变量或表达式推断出的类型来声明强类型变量。

关于c# - C# 是否与 C++11 中的 decltype 等效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25828198/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com