不带参数的变量范围

2024-03-24

Example:

我有以下代码块:

if (!int.TryParse("123", out var parsedNumber))
{
    return;
}

Console.WriteLine(parsedNumber);

控制台的输出是:123

问题:

怎么可能,这条线Console.WriteLine(parsedNumber);知道parsedNumber?

据我了解,parsedNumber应该只在if-block,不应该吗?

如果我尝试这个:

foreach (var data in dataList)
{
   data += "something";
}

Console.WriteLine(data);

Console.WriteLine(data);找不到data.


我认为解决方案是 out 参数,但我不确定。有人可以解释一下吗?


是的,正如您怀疑的那样,区别在于“out”修饰符。

这是 C# 7 中添加的一项功能,允许您在想要将变量用作参数的位置声明该变量。

这可能很方便,否则你必须声明parsedNumber在方法调用之前。

您可以在此处的“输出变量”下阅读更多相关信息。

https://blogs.msdn.microsoft.com/dotnet/2016/08/24/whats-new-in-csharp-7-0/ https://blogs.msdn.microsoft.com/dotnet/2016/08/24/whats-new-in-csharp-7-0/

EDIT

至于为什么变量仍然在 if 之外的范围内,这肯定会令人困惑,但这是实现它时的设计选择,特别是针对“if”情况,并且精确地以便它可以在“try”方法中使用。

你可以参考这个评论(实际上你可以看一下整个讨论,看看关于如何实现这个的不同观点)。

https://github.com/dotnet/roslyn/issues/12939#issuecomment-255650834 https://github.com/dotnet/roslyn/issues/12939#issuecomment-255650834

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不带参数的变量范围 的相关文章

  • WPF 中的屏幕分辨率问题?

    我将在 WPF 中使用以下代码检测分辨率 double height System Windows SystemParameters PrimaryScreenHeight double width System Windows Syste
  • 为什么存在 async 关键字

    浏览 msdn 9 频道视频时 我发现以下未答复的评论 希望有人能解释一下 我不明白 async 关键字的意义 为什么不直接允许 任何时候方法返回任务时都会使用await关键字 就像迭代器一样 可以在任何返回 IEnumerable 的方法
  • 通过增加索引之和来生成排序组合的有效方法

    对于启发式算法 我需要一个接一个地评估特定集合的组合 直到达到停止标准 由于它们很多 目前我正在使用以下内存高效迭代器块生成它们 受到 python 的启发 itertools combinations http docs python o
  • clang 格式换行符在错误的位置

    给出以下代码行 get abc manager get platform status abc platform status sw update status fill update status actions allowed stat
  • 在 VS2017 下使用 Conan 和 CMake 项目进行依赖管理

    我正在尝试使用 CMake 与 VS2017 集成为 C 设置一个开发环境 以便在 Linux x64 下进行编译 为了更好地管理依赖关系 我选择使用 Conan 但我对这个软件还很陌生 我想知道让 VS2017 识别项目依赖关系的最佳方法
  • 将字节数组转换为托管结构

    更新 这个问题的答案帮助我编写了开源项目GitHub 上的 AlicanC 现代战争 2 工具 https github com AlicanC AlicanC s Modern Warfare 2 Tool 你可以看到我是如何阅读这些数据
  • 为什么大多数平台上没有“aligned_realloc”?

    MSVC有自己的非标准函数 aligned malloc aligned realloc and aligned free C 17和C11引入了 std aligned alloc 其结果可以是de分配有free or realloc B
  • (const T v) 在 C 中从来都不是必需的,对吗?

    例如 void func const int i 在这里 const是不必要的 因为所有参数都是按值传递的 包括指针 真的吗 C 中的所有参数确实都是按值传递 这意味着无论您是否包含该参数 实际参数都不会改变const or not 然而
  • 选择列表逻辑应位于 ASP.NET MVC、视图、模型或控制器中的什么位置?

    我觉得我的问题与这个问题很接近 但我想对这样的代码应该放在哪里进行更一般的讨论 Asp Net MVC SelectList 重构问题 https stackoverflow com questions 2149855 asp net mv
  • mprotect 之后 malloc 导致分段错误

    在使用 mprotect 保护内存区域后第一次调用 malloc 时 我遇到分段错误 这是执行内存分配和保护的代码片段 define PAGESIZE 4096 void paalloc int size Allocates and ali
  • SFINAE 如何使用省略号?

    过去 当使用 SFINAE 选择构造函数重载时 我通常使用以下内容 template
  • 劫持系统调用

    我正在编写一个内核模块 我需要劫持 包装一些系统调用 我正在暴力破解 sys call table 地址 并使用 cr0 来禁用 启用页面保护 到目前为止一切顺利 一旦完成 我将公开整个代码 因此如果有人愿意 我可以更新这个问题 无论如何
  • libxml2 xmlChar * 到 std::wstring

    libxml2似乎将所有字符串存储在 UTF 8 中 如xmlChar xmlChar This is a basic byte in an UTF 8 encoded string It s unsigned allowing to pi
  • 二叉树中的 BFS

    我正在尝试编写二叉树中广度优先搜索的代码 我已将所有数据存储在队列中 但我不知道如何访问所有节点并消耗它们的所有子节点 这是我的 C 代码 void breadthFirstSearch btree bt queue q if bt NUL
  • 初始化 LPCTSTR /LPCWSTR [重复]

    这个问题在这里已经有答案了 我很难理解并使其正常工作 基本上归结为我无法成功初始化这种类型的变量 它需要有说的内容7 2E25DC9D 0 USB003 有人可以解释 展示这种类型的正确初始化和类似的值吗 我已查看此站点上的所有帮助 将项目
  • 受限 AppDomain 中的代码访问安全异常

    Goal 我需要在权限非常有限的 AppDomain 中运行一些代码 它不应该访问任何花哨或不安全的内容 except对于我在其他地方定义的一些辅助方法 我做了什么 我正在创建一个具有所需基本权限的沙箱 AppDomain 并创建一个运行代
  • 为什么文件更新时“如果较新则复制”不复制文件?

    我在 Visual Studio Express 中有一个解决方案 如下所示 The LogicSchemaC 中的类 将在运行时解析指定的 XML 文件 以下是在main的方法Program cs LogicSchema ls new L
  • 以 UTF8 而不是 UTF16 输出 DataTable XML

    我有一个 DataTable 我正在使用 WriteXML 创建一个 XML 文件 尽管我在以 UTF 16 编码导出它时遇到问题 并且似乎没有明显的方法来更改它 我了解 NET 在字符串内部使用 UTF 16 这是正确的吗 然后 我通过
  • 服务器响应 PASV 命令返回的地址与建立 FTP 连接的地址不同

    System Net WebException 服务器响应 PASV 命令返回的地址与建立 FTP 连接的地址不同 在 System Net FtpWebRequest CheckError 在 System Net FtpWebReque
  • C#中为线程指定特殊的cpu

    我有 2 个线程 我想告诉其中一个在第一个 cpu 上运行 第二个在第二个 cpu 上运行 例如在具有两个 cpu 的机器中 我怎样才能做到这一点 这是我的代码 UCI UCIMain new UCI Thread UCIThread ne

随机推荐

  • 我们如何在 Apache Arrow 中存储哈希表?

    我对 Apache Arrow 很陌生 所以这个问题可能是无知的 Apache Arrow 提供了以标准化内存格式存储原始类型 结构 数组等数据结构的功能 我想知道是否可以使用 Apache Arrow 存储更复杂的数据结构 如哈希表 或平
  • javascript date getYear() 在 IE 和 Firefox 之间返回不同的结果,如何解决这个问题?

    显然 javascript日期对象的方法 getYear 在 IE8 和 Firefox3 6 之间返回不同的结果 我的机器上有这两个 不确定其他浏览器或版本 Date d new Date alert d getYear FF3 6 gt
  • 如何在iis 7.5中使Asp.net网站离线

    我有一个 ASP NET 网站 但我想在我的客户尝试访问该网站时显示 正在维护 页面 有谁知道如何做到这一点 如果您在 NET 4 0 应用程序池 IIS 7 0 或 IIS 7 5 中运行应用程序 或者您的网站配置为 ASP NET 4
  • Angular - 周围的条件 div 容器

    在我的 app component html 中 我想根据当前 url 渲染某些 div 容器 例如 1 如果当前 URL 是authenticate 则呈现以下内容 div div
  • nvm ls-remote 命令结果为“N/A”

    我正在尝试使用 nvm 安装 Node 但是当我输入任何版本时它都不可用 当我打字时nvm ls remote我只是得到 不适用 我可以访问互联网 所以我不知道会发生什么 更新维护 nvm sh 的 LJHarb 的评论 LJHarb 表示
  • 声明 @synthesize 时单下划线和双下划线的区别

    在最近的 Xcode 4 3 项目模板中 一些 synthesze声明为 synthesize window window synthesize managedObjectContext managedObjectContext synth
  • 无法推送到 Gitlab 注册表 | Quarkus - 臂架构建

    我目前正在开发 Quarkus 应用程序 因此需要 CI 管道 容器注册表 由于通过 docker 的容器化不起作用 docker 守护进程 特权模式 我想使用 Jib Quarkus 已经支持它 管道中的命令 mvn clean pack
  • 有没有办法动态配置 nginx(或其他快速反向代理)?

    假设我们有几个相同的节点 它们是某个 n 层服务的应用程序服务器 假设我们使用 Apache ZooKeeper 来保存分布式应用程序的所有配置 另外 我们在此应用程序前面有一个 nginx 作为负载均衡器和反向代理 假设我们执行的命令仅更
  • 使用BIOS int 13h访问不同磁头的扇区

    我的磁盘每磁道有 63 个扇区 根据我的观察 我假设 我想使用 int 13h 读取 16 位引导加载程序上的扇区 例如 如果我想读取扇区号 63 我将执行以下操作 mov dl 0x80 Drive number mov dh 0 Thi
  • 如何在d3中增量绘制网格?

    下面是一个 HTML 文件 它将绘制一个 10x10 的浅灰色和深灰色交替的正方形网格 它填充一个名为的二维数组the grid与 0 或 1 然后填充一个名为的一维数组nodes with x y and color 然后画nodes与
  • JUnitCore 停止

    我想停止 销毁正在运行的 JUnitCore 它的启动方式是 JUnitCore run Request aClass ClassToRun Like pleaseStop 在 RunNotifier 上 有任何想法吗 http junit
  • ajax 请求后重新加载 dojo 小部件

    我是这个主题的新手 我有 div 里面有一些 dojo 小部件 我使用 ajax 重新加载这个 div 但是之后我的 dojo 小部件没有显示 我怎样才能让我的浏览器在ajax请求后再次重新加载小部件 我不想重新加载整个页面 我的ajax视
  • Polymer 2.0:通知并反映到属性

    我是这个框架的新手 希望看到一些有用且简单的通知和反映属性属性的示例 请保持示例简单或为您提供的任何代码添加解释 Notify 可以设置为 True False 假设你有parent element and child element 工作
  • python 的斯坦福大学 nlp

    我想做的就是找到任何给定字符串的情绪 积极 消极 中性 在研究过程中 我遇到了斯坦福 NLP 但遗憾的是它是在 Java 中 关于如何让它适用于 python 有什么想法吗 Use py corenlp https github com s
  • 线程实现(C#)

    您能给我一个使用线程的程序的简单示例吗 我不明白线程及其使用以及何时使用它 谢谢 有一个here http msdn microsoft com en us library aa645740 28VS 71 29 aspx 和一个非常简单的
  • 创建一个 python 服务器以使用套接字向 Android 应用程序发送数据

    我正在尝试使用 python 中的套接字 我的电脑 创建一个简单的聊天服务器程序来与我的 Android 客户端代码 我的 Android 手机 进行通信 我有一个简单的服务器代码 它接收消息 但当我尝试从服务器向客户端发送消息时 它会阻止
  • 在新订单电子邮件通知中获取客户订单数

    如果是回头客 我想在 WooCommerce 新订单 电子邮件通知中注明 看起来很简单 但我尝试了大约 5 种不同的方法 但没有一个有效 我尝试将其放入两个不同的钩子中 woocommerce email after order table
  • BigIntegers、gcd、模逆来查找公钥

    所以 我使用 java 来查找 RSA 密码的公钥 现在我不确定我在做什么 也不确定它是否正确 我有公钥的信息 C 5449089907 n p q 8271344041 q 181123 p n q 45667 d 53 phi n p
  • 如何使服务器发送事件(SSE)通过 Zuul 代理 spring-boot 2.1.1 工作

    我在通过 zuul 反向代理让 SSE 工作时遇到一些问题 我的设置 Spring boot version 2 1 1 RELEASE Spring cloud dependencies Greenwich RC1 Angular cli
  • 不带参数的变量范围

    Example 我有以下代码块 if int TryParse 123 out var parsedNumber return Console WriteLine parsedNumber 控制台的输出是 123 问题 怎么可能 这条线Co