T[] 和 T[*,*] 有什么区别?

2024-06-28

我的谷歌柔术让我失望了。问题在标题中...有什么区别T[,] and T[*,*]? 我正在寻找 2, 2-1/2 部分的答案:

  1. 外行(或超级架构师)的简单英语解释和示例代码。

  2. 链接到此区别的正式文档。

    额外奖励:指向定义此内容的 C# 4 规范中的小节和页码。 (它不在第 12 节“数组”中)

我有这个想法here http://social.msdn.microsoft.com/Forums/en/csharplanguage/thread/e6f84f77-1a09-4dd9-a2af-eb3a54e9c7bc.


T[]表示从零开始的 T 数组(array[0] 是它的第一个元素)

T[*]表示非从零开始的 T 数组(array[0] 不是它的第一个元素,甚至可能超出范围)

The 你的问题的链接 http://social.msdn.microsoft.com/Forums/en/csharplanguage/thread/e6f84f77-1a09-4dd9-a2af-eb3a54e9c7bc说明没有类型的数组T[*,*],因为所有多维数组T[,]被视为具有未知下界的数组。

下面的代码片段显示了如何创建一个实例T[*]。请注意,您不能将其投射到T[],因为它们是不同的类型。a[0]这里会抛出OutOfRangeException,这个数组中第一个元素的索引是1(啊,帕斯卡的美好时光……).

Array a = Array.CreateInstance(typeof(String), new Int32[] { 1 }, new Int32[] { 1 });
Console.WriteLine(a.GetType());    // System.String[*]  

更多示例代码 http://www.codeproject.com/Articles/34195/Non-Zero-Based-Arrays-and-Interface

Bonus.C# 语言规范说,“数组元素的索引范围从 0 到 Length - 1”。显然,该语言不提供对非从零开始的数组的内置支持,它只是您可以创建的自定义数据结构;尽管从某种意义上说,编译器碰巧有一个特殊的符号来表示其类型,并且 VS 在调试时使用标准数组可视化工具。

也可以看看:

如何在 C# 中创建索引从 1 开始的一维数组 https://stackoverflow.com/questions/5728409/how-to-create-a-1-dimensional-array-in-c-sharp-with-index-starting-at-1

C#:基于非零的数组不符合 CLS https://stackoverflow.com/questions/955732/c-nonzero-based-arrays-are-not-cls-compliant

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

T[] 和 T[*,*] 有什么区别? 的相关文章

  • 反序列化 GUID 数组时出现 JSON.NET 异常

    我正在使用 JSON NET 反序列化从浏览器发送的 AJAX HTTP 请求 并且在使用 Guid 作为参数的 Web 服务调用时遇到问题 当我使用内置的 NET 序列化器时 这工作得很好 首先 流中的原始字节如下所示 System Te
  • 使用 xmlns 属性(命名空间)查询 XDocument

    我尝试从 Visual Studio csproj 文件查询元素 我创建了一个简短的示例来说明该问题 Working string xml1
  • 信用卡号应该存储为字符串还是整数?

    是啊 只是想想而已 我应该将在我的网站上输入的信用卡号存储为字符串还是整数 我的意思是 它们由数字组成 这让我认为它是一个整数 但我不对它们进行数学运算 所以也许字符串更合适 编辑 所以我必须在加密之前存储在某个时刻输入的数字 我可能应该更
  • 在 SelectSingleNode 中使用 XPath:从 XML 中检索单个元素(如果存在)

    我的 XML 看起来像
  • boost::noncopyable 是如何工作的

    我在 C 实践中偶然发现了两个愚蠢的问题 据我所知 c 中的复制构造函数和赋值运算符不是继承的 那么 boost noncopyable 在这种情况下如何帮助禁止这些东西呢 class X private boost noncopyable
  • 如何向 Iron Python 添加模块?

    我一直在尝试使用 C Visual Studio 执行以下 Python 代码 graphcreater py 我通过 NuGet 包管理器添加了 IronPyton 2 7 7 和 IronPython StdLib 2 7 7 一旦我运
  • 为什么要在 C 和 C++ 项目中创建 include/ 目录?

    当我处理我的个人 C 和 C 项目时 我通常把file h and file cpp在同一目录中 然后file cpp可以参考file h with a include file h 指示 然而 通常会发现库和其他类型的项目 如 linux
  • StreamReader 的默认值是多少?

    我需要使用这个构造函数public StreamReader Stream stream Encoding encoding bool detectEncodingFromByteOrderMarks int bufferSize bool
  • 如何将值从 ASP.NET MVC 控制器传递到 MVC 视图内的 ASP.NET Webforms 控件?

    我的 ASP NET MVC 方法并未跨越 ASP NET Web 窗体 因此我很难理解如何更好地将值从 ASP NET MVC 控制器传递到 MVC 视图内的 ASP NET Webforms 脚本 例如 控制器动作 public Vie
  • 如何重命名 MacOS/X 程序中的程序名称菜单标签?

    我有一个在 MacOS X 下运行的基于 Qt 的 GUI 程序 我希望能够更改该程序的第一个菜单标题的标签 即此屏幕截图中用红色圈出的标签 有没有一种编程方法可以做到这一点 假设不存在基于 Qt 的解决方案 则 Objective C 本
  • 使用自定义对象的动态列表并且无法动态更改dataGrid的单元格属性

    我刚开始在 Stack 上发帖 我已经搜索了很长一段时间来解决与我类似的问题 我试图根据对象的布尔值动态地将 WinForms DataGridView 中的复选框从非只读更改为只读 它在调试模式下显示更改已经发生 但是一旦完全运行 应该只
  • WCF:通用接口的序列化可能吗?

    我正在尝试实现一个服务契约 其中包含一个采用通用接口的方法 并且该通用接口本身被赋予一个接口参数 我用 ServiceKnownType 装饰了服务接口 用常规 KnownType 装饰了服务实现 并用常规 KnownType 装饰了数据契
  • 开始学习 C# 的最佳方式是什么?

    我对 vb 6 有一点编程经验 而 vb net 则不多 请告诉我成为专家 C 程序员的最佳方法 我知道这需要很长时间 想想你如何学习人类语言 阅读 写作 口语和听力 阅读代码 阅读文章 阅读示例 当您更有经验时 请查看您使用的一些项目的源
  • 网页上的富文本编辑器

    我正在尝试在我的网页中添加一个富文本编辑器 用户可以在其中撰写评论并格式化他们所写的内容 类似于我们在此网站上撰写帖子的编辑器 谁能指出我关于此的正确方向 任何可以帮助我构建这样一个组件的教程 我还想要一个免费的产品 忘记之前提到 类似的东
  • 查询 XmlDocument 而不会出现“命名空间前缀未定义”问题

    我有一个 Xml 文档 它定义并引用了一些命名空间 我将其加载到 XmlDocument 对象中 据我所知 我创建了一个 XmlNamespaceManager 对象 用于查询 Xpath 问题是我收到命名空间 my 未定义的 XPath
  • 在 Linux 上用 C 跟踪键盘和鼠标事件

    如何在 Linux 中用 C 语言跟踪键盘或鼠标事件 Like for example if the user presses ESC Shift etc I should be able to track it Same way for
  • 如何隐藏鼠标光标?

    我想问是否有人可以为我提供一个 C 代码 在其中我可以在按下特定键时隐藏 显示鼠标指针 我发现一些只为 TURBO C 编写的代码 它们都不能使用 dev c 甚至 Visual c 编译和运行 我尝试运行在 Dev C 中找到的代码 但我
  • 我使用 difftime 的 c 函数有时会返回 65535

    我有一个函数 使用 difftime 来检测自通信心跳停止以来的时间 以秒为单位 该函数的运行速度可以达到每 50 毫秒一次 该函数似乎可以工作 除了偶尔返回 65535 之外 我可以将执行次数减少到每秒一次 因为 difftime 的返回
  • C++ 中的 golang 风格“延迟”[重复]

    这个问题在这里已经有答案了 我正在阅读有关 go 语言的defer http blog golang org defer panic and recover陈述 它允许您指定函数结束时要执行的操作 例如 如果您有一个文件指针或资源 则只需指
  • 将用户控件绑定到 bool 属性的相反值

    非常简单 我想做同样的事情this https stackoverflow com questions 534575 how do i invert booleantovisibilityconverter但在winforms中 谷歌似乎提

随机推荐

  • GCM 注册 ID 已更改

    我开发了一个使用 GCM 技术的应用程序 一切正常 我观察到设备的注册 ID 一段时间后发生了变化 这导致我的应用程序出现问题 因为我的应用程序依赖于注册 ID 那么如何为客户获取固定的Reg ID呢 我读完了这两个原因here http
  • Angular 6 不赞成同时使用 formControlName 和 ngModel

    我有 Angular 6 项目 我一起使用 ngModel 和 formControlName 但角度在下面给了我警告 例如 当我从网格中的按钮打开更新弹出窗口时 我可以轻松地自动绑定更新弹出窗口中的输入 但 Angular 7 表示删除
  • C# 是“??”吗?运算符线程安全吗?

    大家都知道这不是线程安全的 public StringBuilder Builder get if builder null builder new StringBuilder return builder 那这个呢 public Stri
  • 错误:找不到模块:错误:无法解析“@angular/cdk/scrolling”

    我遇到了错误 找不到模块 错误 无法解析 angular cdk scrolling 一旦我在 app module ts 中添加 import TableModule from primeNG 为什么会抛出这个错误 我没有看到 prime
  • 如何在Python多处理中的所有进程之间共享数据?

    我想在给定文章中搜索预定义的关键字列表 如果在文章中找到关键字 则分数加 1 我想使用多重处理 因为预定义的关键字列表非常大 10k 个关键字 文章数量为 100k 我碰到this https stackoverflow com quest
  • 如何构图“也许”镜头?

    如果我有嵌套记录的镜头 其中每个镜头返回一个Maybe 我怎样才能让它们组合起来 这样如果 遍历 中有任何东西返回一个Nothing最终结果是Nothing data Client Client clientProperties Maybe
  • 使用 gson 将 Java 对象转换为 JSON 字符串

    我在这里找到了一些示例 说明如何将 json 转换为 java 对象 但这里我需要将 Java 对象转换为GSON 我有一个Java对象 现在我想将Java对象转换为Gson 我该如何实现这一点 请参考我的代码 Staff obj new
  • Aurora RDS 实例无法停止

    我正在尝试 Amazon Aurora 实例 但看不到停止它的选项 唯一的选项是删除和重新启动 我是不是错过了什么 编辑 2018 09 25 Amazon Aurora 现在支持停止和启动数据库集群 根据本公告 https aws ama
  • javascript 减法(-) 键码

    好的 我需要我的代码来检查减号 减号 是否被按下 如果被按下我想要弹出一个警报框 我都试过了109 and 189关键代码 但我仍然没有得到想要的结果 虽然我按 我没有收到那个警报框 JavaScript字符代码 您在按键事件期间测试的内容
  • 进行 SendInput 时调用全局低级键盘钩子。如何预防?

    我有一个用 c 编写的 win 32 应用程序 它设置低级键盘挂钩 现在我想将输入发送到任何应用程序 例如单词 记事本 我该怎么做呢 我已经足够使用 findwindow sendmessage 了 对于所有这些 我需要了解编辑控件 找到编
  • Python Decimal 模块不适用于 uint64

    我正在尝试将 numpy uint64 由 numpy sum 输出 转换为小数 而不会丢失 Decimal 模块的精度 gt gt gt from decimal import Decimal gt gt gt import numpy
  • 如何在 // 注释中转义反斜杠

    我有一条以反斜杠结尾的评论 就像是 use Clang 警告我 这是多行注释 warning multi line comment Wcomment use 所以我尝试在末尾添加一些空格 但没有帮助 我可以以某种方式逃避反斜杠吗 问题的基础
  • 使用 XQuery 更新自动递增?

    Does XQuery更新支持自增属性 就像中的自增字段一样SQL 我在用着BaseX作为我的数据库 Given Christian Gr n 在 BaseX 邮件列表上的回答 https mailman uni konstanz de p
  • 为什么反斜杠出现两次?

    当我创建包含反斜杠的字符串时 它们会重复 gt gt gt my string why does it happen gt gt gt my string why does it happen Why 你所看到的是表示 of my stri
  • 在javascript中打开本地文件系统中的文件

    我正在寻找一种在 IE 和 Firefox 浏览器中使用 javascript 打开临时目录中的 xls 文件的方法 我尝试使用 JavaScript 如下所示 function openMe var newwindow window op
  • WPF 绑定无法与 int 类型的属性正常工作

    我拥有以下财产int输入我的视图模型 该模型绑定到TextBox 一切正常 TwoWay绑定工作正常 除了一种情况 如果我清除的值TextBox 属性设置器不会被调用 尽管值已被清除TextBox 属性仍保持先前的值 有人遇到过类似的问题吗
  • javascript 如何将对象深度绑定到新的“this”值

    我有一个值 它可能是一个原语或一个函数或一个递归地包含原语 函数 对象的对象 Given a theThis参数 我如何将可能在我的值内的所有函数深度绑定到theThis 我尝试过类似的东西 function deepBind o ths
  • 使用 Glide 进行缩放和遮罩

    我只是想看看是否有人可以为我指明正确的方向 以学习如何使用 Glide 来完成此任务 我们有一个包含内容的页面 内容显示为单个图像 想想 杂志页面的图像 在轻松阅读模式下 我想将第一块居中并缩放 文本内容并屏蔽其余内容 单击 下一步 时 我
  • 如何构建具有依赖关系的单元测试?

    给出以下简单示例 class MathObject object A completely superfluous class def add self a b return a b def multiply self a b result
  • T[] 和 T[*,*] 有什么区别?

    我的谷歌柔术让我失望了 问题在标题中 有什么区别T and T 我正在寻找 2 2 1 2 部分的答案 外行 或超级架构师 的简单英语解释和示例代码 链接到此区别的正式文档 额外奖励 指向定义此内容的 C 4 规范中的小节和页码 它不在第